Una lettera è la prima lettera di una parola in due casi:
è il primo carattere della riga (la riga può iniziare direttamente con una parola);
è immediatamente preceduta da uno spazio.
Negli altri casi la lettera si trova all'interno di una parola e rimane invariata.
Gli spazi, a loro volta, non vengono modificati. Perciò tutti gli intervalli tra le parole, inclusi quelli composti da più spazi consecutivi, vengono preservati, e la stringa in output coincide con quella in input ovunque, tranne che nelle prime lettere delle parole.
Per convertire una lettera latina minuscola in maiuscola si può usare la funzione toupper oppure sottrarre dal codice del carattere la differenza '' - '' = : nella tabella ASCII i codici delle lettere latine minuscole e maiuscole differiscono esattamente di .
Poiché la stringa contiene spazi, bisogna leggerla per intero, ad esempio con la funzione getline in C++ o gets in C.
Implementazione dell'algoritmo
Dichiariamo la stringa di lavoro.
string s;Leggiamo la stringa in input.
getline(cin,s);Se il primo carattere della stringa non è uno spazio, va convertito in lettera maiuscola.
if (s[0] != ' ') s[0] = toupper(s[0]);Se il carattere corrente è una lettera ed è preceduto da uno spazio, va anch'esso convertito in lettera maiuscola.
for(int i = 1; i < s.size(); i++)
if (s[i] != ' ' && s[i-1] == ' ')
s[i] = toupper(s[i]);Stampiamo la stringa risultante.
cout << s << endl;Implementazione in 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 < s.length; i++)
if (s[i] != ' ' && s[i-1] == ' ')
s[i] = Character.toUpperCase(s[i]);
System.out.println(String.valueOf(s));
con.close();
}
}Implementazione in Python
Leggiamo la stringa in input.
s = input()La funzione title() viene utilizzata per convertire la prima lettera di ogni parola della stringa in maiuscolo, mentre le altre lettere diventano minuscole.
Stampiamo la stringa risultante.
print(s.title())