Подскажите, пожалуйста как решить данную задачу на с++
Слова с прописной буквы
Дана строка. Измените регистр символов в этой строке так, чтобы первая буква каждого слова была прописной, а остальные буквы — строчными. Словом называется последовательность строчных или прописных латинских букв. Все остальные символы являются разграничителями между словами.
Входные данные
Дана строка из символов с ASCII-кодами от 32
до 127
.
Выходные данные
Выведите ответ задачи.
Примеры
Ввод
Вывод
-a-bb-ccc
-A-Bb-Ccc
In a hole in the ground there lived a hobbit.
In A Hole In The Ground There Lived A Hobbit.
Everyone OF uS HAS all wE NEED
Everyone Of Us Has All We Need
По дате
По рейтингу
Попроще на си https://ideone.com/SziFKG

123456789101112131415161718192021222324252627
#include <cctype>
#include <iostream>
#include <string>
using namespace std;
string capitalize(string line) {
auto flag = true;
for (auto& ch : line) {
if (ch > 0) {
if (!isalpha(ch)) flag = true;
else if (!flag) ch = tolower(ch);
else {
ch = toupper(ch);
flag = false;
}
}
}
return line;
}
int main() {
string line;
getline(cin, line);
line = capitalize(line);
cout << line << '\n';
}
123456789101112131415161718192021222324252627282930
#include <iostream>
#include <cctype>
#include <string>
using namespace std;
string capitalize(string str) {
bool new_word = true;
for (char& c : str) {
if (isalpha(c)) {
if (new_word) {
c = toupper(c);
new_word = false;
} else {
c = tolower(c);
}
} else {
new_word = true;
}
}
return str;
}
int main() {
string input;
getline(cin, input);
cout << capitalize(input) << endl;
return 0;
}
Больше по теме