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.