Contare i caratteri

I problemi con i testi (parole, frasi) sono diversi da quelli con i numeri…

  • Quanti caratteri in un testo?
  • Quante vocali, consonanti?
  • Quante maiuscole, minuscole?
  • Quante A, B, C, …, Z?

Per contare quante volte compare ciascun lettera puoi cominciare così…

Var
   CONTATORI: Array['A'..'Z'] of Word; (* fino a ~65000*)
   frase    : String;

Procedure Inizializza;
Var i: Char;
Begin
   For i:='A' To 'Z' Do
      CONTATORI[i]:=0;
End;

Procedure Visualizza;
Var i: Char;
Begin
   For i:='A' To 'Z' Do
      Writeln(i, ' ', CONTATORI[i]);
End;

Procedure Conta;
Var i: Byte;
    C: Char;
Begin
   For i:=1 To Length(frase) Do
   Begin   
      C:=frase[i];
      Inc(CONTATORI[C]);
   End;
End;

Begin
   Writeln('Inserisci una frase a piacere');
   Readln(frase);
   Inizializza;
   Conta;
   Visualizza;
   Readln;
End.

Note

  1. Il codice precedente conta le lettere maiuscole
  2. Se la frase in input contiene caratteri diversi ci sarà un errore in esecuzione
  3. Si potrebbero convertire le lettere minuscole in lettere maiuscole, con Upcase(), e poi conteggiarle.
    C:=UpCase(frase[i]);
  4. Si potrebbero contare tutti i caratteri della tabella ASCII dal codice #0 al codice #255
    Type CONTATORI: Array[#0..#255] of Word;