Буква є першою буквою слова у двох випадках:
це перший символ рядка (рядок може одразу починатися зі слова);
безпосередньо перед нею стоїть пробіл.
У решті випадків буква знаходиться всередині слова і залишається без змін.
Пробіли при цьому не змінюються. Тому всі проміжки між словами, у тому числі з кількох пробілів поспіль, зберігаються, і вихідний рядок збігається із вхідним усюди, крім перших букв слів.
Для перетворення рядкової латинської букви на заголовну можна скористатися функцією toupper або відняти від коду символу різницю '' - '' = : у таблиці ASCII коди рядкових і заголовних латинських букв відрізняються рівно на .
Оскільки рядок містить пробіли, читати його потрібно цілком, наприклад функцією getline у C++ або gets у C.
Реалізація алгоритму
Оголосимо робочий рядок.
string s;Читаємо вхідний рядок.
getline(cin,s);Якщо перший символ рядка не є пробілом, його слід перетворити на заголовну букву.
if (s[0] != ' ') s[0] = toupper(s[0]);Якщо поточний символ є буквою і перед ним знаходиться пробіл, його також слід перетворити на заголовну букву.
for(int i = 1; i \u003c s.size(); i++)
if (s[i] != ' ' \u0026\u0026 s[i-1] == ' ')
s[i] = toupper(s[i]);Виводимо результуючий рядок.
cout \u003c\u003c s \u003c\u003c endl;Java реалізація
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
char s[] = con.nextLine().toCharArray();
if (s[0] != ' ') s[0] = Character.toUpperCase(s[0]);
for(int i = 1; i \u003c s.length; i++)
if (s[i] != ' ' \u0026\u0026 s[i-1] == ' ')
s[i] = Character.toUpperCase(s[i]);
System.out.println(String.valueOf(s));
con.close();
}
}Python реалізація
Читаємо вхідний рядок.
s = input()Функція title() використовується для перетворення першої букви кожного слова в рядку на заголовну (верхній регістр), а решта букв стають рядковими (нижній регістр).
Виводимо результуючий рядок.
print(s.title())