1 2 type Tzaznam=record {definice nového datového typu} 3 znak:char; 4 pocet:byte; 5 end; 6 7 var s: string; 8 cetnost: array ['A'..'Z'] of integer; {proměnná s hodnotami četností} 9 i:integer; {počítadlo} 10 zn:char; 11 nej:char; 12 f:file of Tzaznam; {proměnná typu soubor} 13 promena:Tzaznam; 14 15 begin 16 for zn:='A' to 'Z' do cetnost[zn]:=0; {nastavení hodnot četností na nulu} 17 writeln('zadej retezec znaku'); 18 readln (s); {načte řetězec} 19 20 {Počítání četností } 21 for i:=1 to ord(s[0]) do {na nulové pozici proměnné typu string (s[0]) je vždy uložena délka stringu} 22 if upcase(s[i]) in ['A'..'Z'] then {prochází string po jednotlivých znacích zvišuje četnosti v proměnné četnost} 23 inc(cetnost[upcase(s[i])]); 24 25 {Zjištění největší četnosti} 26 nej:='A'; 27 for zn:='B' to 'Z' do 28 if cetnost[zn]>cetnost[nej] then 29 nej:=zn; 30 write ('Nejcetnejsi pismena (s cetnosti ',cetnost[nej],') jsou '); 31 for zn:='A' to 'Z' do {Ošetření pro případ že dvě četnosti jsou stejné} 32 if cetnost[zn]=cetnost[nej] then 33 write (zn:3); 34 readln; 35 36 {Výpis všech četností} 37 assign(f,'vypis.dat'); {spojí proměnnou typu soubor s fyzickým souborem} 38 rewrite(f); {otevření nový souboru pro zápis/přepis} 39 for zn:='A' to 'Z' do 40 begin 41 promena.znak:=zn; {Naplnění proměnné promena} 42 promena.pocet:=cetnost[zn]; {Naplnění proměnné promena} 43 write(f,promena); {Zápis do souboru} 44 end; 45 reset (f); {otevírá existující soubor} 46 repeat 47 read (f,promena); {čtení ze souboru} 48 write (promena.znak:3,promena.pocet:2) {výpis na obrazovku} 49 until eof(f); {eof vrací TRUE, když se se dosáhne konce souboru} 50 readln; 51 52 end.