Top.Mail.Ru
Ответы

Подскажите, пожалуйста как решить данную задачу на с++

Слова с прописной буквы
Дана строка. Измените регистр символов в этой строке так, чтобы первая буква каждого слова была прописной, а остальные буквы — строчными. Словом называется последовательность строчных или прописных латинских букв. Все остальные символы являются разграничителями между словами.

Входные данные

Дана строка из символов с 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

По дате
По рейтингу
Аватар пользователя
Новичок
8мес

Попроще на си https://ideone.com/SziFKG

Аватар пользователя
Высший разум
8мес
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'; 
} 
Аватар пользователя
Мастер
8мес
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; 
}