{ File: contmaiu.pas } { Scopo: uso di array } program FrequenzaMaiuscole; { Legge una sequenza di caratteri terminata da '.' e stampa la lettera alfabetica maiuscola che compare con frequenza massima nella sequenza. Usa un array indicizzato con lettere maiuscole per determinare la frequenza di ogni lettera maiuscola. } type TipoLettera = 'A'..'Z'; TipoFrequenza = array [TipoLettera] of 0..MAXINT; { tipo array di interi positivi, indicizzato con lettere maiuscole } var conta : TipoFrequenza; { array di contatori, uno per lettera } lettera, { indice del ciclo per scandire l'array } lettera_max : TipoLettera; { lettera con frequenza massima } ch : char; { carattere letto } begin { FrequenzaMaiuscole } { azzera tutti i contatori } for lettera := 'A' to 'Z' do conta[lettera] := 0; { leggi la sequenza di caratteri in ingresso e calcola le frequenze } writeln('Immetti una sequenza di caratteri terminata da ''.'' !'); repeat read(ch); if ('A' <= ch) and (ch <= 'Z') then conta[ch] := conta[ch] + 1; { ch e' una lettera maiuscola, quindi incrementa il contatore corrispondente } until ch = '.'; { trova la lettera maiuscola con frequenza massima } lettera_max := 'A'; for lettera := 'B' to 'Z' do if conta[lettera] > conta[lettera_max] then lettera_max := lettera; { stampa del risultato } if conta[lettera_max] > 0 then begin writeln('Lettera maiuscola piu'' frequente: ', lettera_max); writeln('Essa appare ', conta[lettera_max], ' volte') end else writeln('Testo senza lettere maiuscole') end. { FrequenzaMaiuscole }