В строке заменить строчную букву на прописную - C (СИ)
Формулировка задачи:
Всем привет!
У меня есть работающая функция, которая заменяет строчную букву на прописную, если буква стоит после запятой. Но в этом коде есть повторение (тавтология?), которую хотелось бы исправить. Помогите, пожалуйста, это сделать.
Плюс ко всему, куча вложенных циклов утомляет и усложняет программу.
Простая задачка, но бьюсь уже много времени, чтобы упростить.
Буду благодарен за любую помощь.
Спасибо.
void Upper(char str[], int &count)
{
int i=0;
for(i; str[i]; ++i)
{
if(str[i] == ',' )
{
while(str[i])
{
if(isalpha(str[i]) && isupper(str[i]))
{
str[i] = tolower(str[i]);
break;
}
++i;
}
}
}
}Решение задачи: «В строке заменить строчную букву на прописную»
textual
Листинг программы
#include <iostream>
using namespace std;
int main()
{
char str[1024] = {0};
cout<<"Enter str (less than 1024 chars)\n";
cin.getline(str,1024);//Ввод строки символов можно с пробелами
for(int i = 0; str[i + 1] != '\0'; i++)
{
//Проверяем стоит ли символ после запятой
//и в нижнем регистре ли он
if(str[i] == ',' && islower(str[i + 1]))
str[i + 1] = toupper(str[i + 1]);//Если да то поднимаем регистр
}
cout<<"Text after replacing\n";
cout<<str<<endl;
system("pause");
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с потоками ввода-вывода и строками.
- Объявление переменной типа int для хранения количества символов в строке.
- Объявление массива символов типа char с размером 1024 символа и инициализацией всех его элементов нулевым значением.
- Вывод сообщения с просьбой ввести строку символов.
- Ввод строки символов с помощью функции
getlineв массивstr. - Проверка каждого символа в массиве
strна соответствие заданным условиям: символ за запятой и символ в нижнем регистре. - Если условия выполняются, то изменяем значение следующего символа в массиве на верхний регистр с помощью функции
toupper. - Вывод сообщения о завершении замены символов.
- Вывод строки символов в консоль с помощью оператора
cout. - Ожидание нажатия клавиши для завершения работы программы с помощью функции
pause. - Возвращение значения 0, что означает успешное завершение работы программы.