Четверг, 25.04.2024, 13:12
Информатика и математика в Плесской школе
Приветствую Вас Гость | RSS
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

На вход программе подаются строчные английские буквы. Ввод этих символов заканчивается точкой (другие символы, отличные от “.” и букв “a”..“z”, во входных данных отсутствуют; в программе на языке Бейсик символы можно вводить по одному в строке, пока не будет введена точка). Требуется написать эффективную программу, которая будет печатать буквы, встречающиеся во входной последовательности, в порядке уменьшения частоты их встречаемости. Каждая буква должна быть распечатана один раз. Точка при этом не учитывается.
Если какие-то буквы встречаются одинаковое число раз, то они выводятся в алфавитном порядке. Например, пусть на вход подаются следующие символы:
batat.
В данном случае программа должна вывести
atb

Решение:

Автор Орехова Екатерина

program n1;
uses crt;
var i,j,m:integer;
s:string;
a:array [1..26] of char;
b:array [1..26] of integer;
s1:char;
begin
for i:=1 to 26 do   a[i]:=chr(i+96);
readln (s);
for i:=1 to length(s) do begin
for j:=1 to 26 do
                  if (s[i]=a[j]) then b[j]:=b[j]+1;
                        end;
for i:=1 to 25  do
    for j:=1 to  25 do
        if b[j] < b[j+1] then begin
        m:=b[j];
        s1:=a[j];
        b[j]:=b[j+1];
        a[j]:=a[j+1];
        b[j+1]:=m;
        a[j+1]:=s1;
        end;
for i:=1 to 26 do
if ( b[i]<>0) then writeln (a[i],' ',b[i]);
end.

 

Поиск
Календарь
«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Учительский портал
    Copyright MyCorp © 2024