Заголовний рядок#8320

Заголовний рядок (Розбір)

Буква є першою буквою слова у двох випадках:

У решті випадків буква знаходиться всередині слова і залишається без змін.

Пробіли при цьому не змінюються. Тому всі проміжки між словами, у тому числі з кількох пробілів поспіль, зберігаються, і вихідний рядок збігається із вхідним усюди, крім перших букв слів.

Для перетворення рядкової латинської букви на заголовну можна скористатися функцією 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())