Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2022, 18:46   #1
Кот__
 
Регистрация: 11.04.2022
Сообщений: 4
Печаль Работа со строками

Доброго времени суток! У меня возникли проблемы с разработкой функции. Моя функция должна напечатать предложение так, чтобы каждое слово начиналось с прописной буквы( для кириллицы и латиницы ) на языке С.

Я разработала такую функцию:
Код:
char* UkrStrUp(char* str)
{
	const char* usmall = "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя";
	const char* ucapital = "АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯ";
	const char* plet, * plet1;
	char* pch;

	char first = str[0];

	for (pch = str; *pch != '\0'; pch++) {
		plet = strchr(usmall, *pch);
		plet1 = strchr(ucapital, *pch);

		if (plet != NULL) { 
			first = ucapital[plet - usmall]; 
		}
		else if (plet1 != NULL) {
			*pch = usmall[plet1 - ucapital];
		}
		else
		{
			*pch = toupper(*pch); 
			if (*pch == ' ')
			{
				*(pch + 1) = toupper(*(pch + 1));
				pch += 1;   
			}
			else if (isupper(*pch))        
			{
				*pch = tolower(*pch);
			}
		}
	}
	return str;
}
Если с латиницей всё работает, то с кириллицей какие-то проблемы. Я мучаюсь уже который час и никак не могу понять как правильно сделать и что не так. Буду очень благодарна если поможете
Там для кириллицы нужно ёще сделать так, что б после пробела букву делало большой, но что б я не делала не подходит. Извините если есть какие-то елементарные ошыбки(
Очень прошу помочь !(если можно с наочным кодом) Спасибо)

Последний раз редактировалось Кот__; 11.04.2022 в 19:03.
Кот__ вне форума Ответить с цитированием
Старый 12.04.2022, 05:05   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,306
По умолчанию

Не запускал, но примерно так:
Код:
char* UkrStrUp(char* str)
{
	const char* usmall = "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя";
	const char* ucapital = "АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯ";
	const char* plet, * plet1;
	char* pch;
	int need_upper = 1;

	for (pch = str; *pch != '\0'; pch++) {
		if (*pch == ' ') {
			need_upper = 1;
			continue;
		}

		plet = strchr(usmall, *pch);
		plet1 = strchr(ucapital, *pch);

		if (plet) {
			if (need_upper)
				*pch = ucapital[plet - usmall];
		}
		else if (plet1) {
			if (!need_upper)
				*pch = usmall[plet1 - ucapital];
		}
		else if (isupper(*pch)) {
			if (!need_upper)
				*pch = tolower(*pch);
		}
		else {
			if (need_upper)
				*pch = toupper(*pch);
		}
		need_upper = 0;
	}
	return str;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 12.04.2022 в 05:09.
BDA на форуме Ответить с цитированием
Старый 12.04.2022, 11:25   #3
Кот__
 
Регистрация: 11.04.2022
Сообщений: 4
По умолчанию

Я очень вам благодарна. Спасибо большое

Последний раз редактировалось Кот__; 12.04.2022 в 11:29.
Кот__ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа со строками на С Rishka Помощь студентам 3 16.03.2013 14:44
Работа со строками weech Помощь студентам 5 11.03.2012 16:05
Работа со строками в С++ Aleksandr22 Помощь студентам 15 26.02.2011 06:15
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Работа со строками XSGRAFF Общие вопросы C/C++ 5 26.05.2009 00:47