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.