Признак конца текста вводится пользователем. Выведите на печать количество
каждой содержащихся строке латинских и русских прописных букв в порядке
частоты их появления.
Я наконец почти сделал задачу так, как этого хотел от меня препод, но с русскими всёравно какие-то проблемы???
Код
program Project1;
var
s: string;
i, j, k, n: integer;
c, abc: string;
mas: array[1..2, 1..59] of string;
begin
writeln('Start');
Writeln('For the exit program enter the "end."');
writeln;
write('Enter the text: ');
readln(s);
abc:='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
while s <> 'end.' do
begin
n:= 0;
for i:= 1 to length(s) do
begin
if s[i] in ['A'..'Z'] then
begin
k:= 1;
for j:= i+1 to length(s) do
begin
if s[i] = s[j] then
begin
s[j]:= '!';
k:= k+1;
end;
end;
n:= n+1;
mas[1, n]:= s[i];
mas[2, n]:= inttostr(k);
s[i]:= '!'
end;
if pos(s[i],abc)>0 then
begin
k:= 1;
for j:= i+1 to length(s) do
begin
if s[i] = s[j] then
begin
s[j]:= '!';
k:= k+1;
end;
end;
n:= n+1;
mas[1, n]:= s[i];
mas[2, n]:= inttostr(k);
s[i]:= '!'
end;
end;
for i:= 1 to n-1 do
for j:= i+1 to n do
begin
if mas[2,i] < mas[2, j] then
begin
k:= strtoint(mas[2,i]);
c:= mas[1,i];
mas[2,i]:= mas[2, j];
mas[1,i]:= mas[1, j];
mas[2, j]:= inttostr(k);
mas[1,j]:= c;
end;
end;
for i:= 1 to n do
Writeln(mas[1,i], ' - ', mas[2,i]);
write('Enter the text: ');
readln(s);
end;
end.