-- Nome file: conta.adb; -- Autore: Samuel Ribi; -- Data creazione: 9.3.01; -- Scopo: Conta le righe, le parole e le lettere di un file; -- Scritto con: Text Editor su Unix; with Ada.Text_IO, Ada.Integer_Text_IO; use Ada.Text_IO, Ada.Integer_Text_IO; procedure conta is nomefile : STRING(1..255) := (others => ' '); file : FILE_TYPE; l : POSITIVE; numero_righe : NATURAL := 0; numero_caratteri : NATURAL := 0; numero_parole : NATURAL := 0; char : CHARACTER; precspaz : BOOLEAN := true; begin Put("Inserisci il nome del file: "); Get_Line(nomefile, l); New_Line; open(file,in_file, nomefile(1..l)); while not end_of_file(file) loop if numero_righe > 0 then Skip_line(file); end if; while not end_of_line(file) loop numero_caratteri := numero_caratteri + 1; get(file, char); case CHARACTER'POS(char) is when 32 => precspaz := true; when 9 => numero_parole := numero_parole + 1; when others => if precspaz then numero_parole := numero_parole + 1; precspaz := false; end if; end case; end loop; precspaz := true; numero_righe := numero_righe + 1; numero_caratteri := numero_caratteri + 1; end loop; close(file); Put("Il file "); Put(nomefile(1..l)); Put(" ha "); Put(numero_righe, width => 0); Put(" righe, "); Put(numero_parole, width => 0); Put(" parole e "); Put(numero_caratteri, width => 0); Put(" caratteri."); New_Line(2); end conta;