// PascalABC.Net 3.0, сборка 1052const Rus=['А'..'Я'];var s:string; i,k,t:integer; c,c1,tc,sc:char; f:array['А'..'а'] of byte; // 'а' - это для 'Ё' ch:array['А'..'а'] of char;begin Write('Введите строку: '); Readln(s); for c:='А' to 'а' do begin f[c]:=0; ch[c]:=c end; k:=0; for i:=1 to Length(s) do begin c:=UpCase(s[i]); if c in Rus then begin Inc(f[c]); Inc(k) end else if c='Ё' then begin Inc(f['а']); Inc(k) end; end; Writeln('Количество русских букв равно ',k); { сортировка массива со счетчиком количества букв } for c1:='А' to Pred('а') do for c:='А' to Pred('а') do if f[c]<f[Succ(c)] then begin t:=f[c]; tc:=ch[c]; sc:=Succ(c); f[c]:=f[sc]; ch[c]:=ch[sc]; f[sc]:=t; ch[sc]:=tc end; Writeln('Частота встретившихся букв'); c:='А'; while (c<='а') and (f[c]>0) do begin if ch[c]='а' then ch[c]:='Ё'; Writeln(ch[c],' - ',f[c]); Inc(c) end;end.
Тестовое решение:Введите строку: Когда я был парнишкой, носил я брюки клёшКоличество русских букв равно 33Частота встретившихся буквК - 4И - 3Л - 3О - 3А - 2Б - 2Н - 2Р - 2Ш - 2Я - 2Г - 1Д - 1Й - 1П - 1С - 1Ы - 1Ю - 1Ё - 1