СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
≡ информатика
сайты - меню - вход - новости




Задания
Версия для печати и копирования в MS Word
Задание 27 № 3119

На вход программы подаются произвольные алфавитно-цифровые символы. Ввод этих символов заканчивается точкой. Требуется написать программу, которая будет печатать последовательность строчных английских букв ('a' 'b'... 'z') из входной последовательности и частот их повторения. Печать должна происходить в алфавитном порядке. Например, пусть на вход подаются следующие символы: 

fhb5kbfыshfm. 

В этом случае программа должна вывести 

b2 

f3 

h2 

k1 

m1 

s1

Решение.

program C4;

uses crt;

var a:array['a'..'z'] of integer;

i:integer;

ch:char;

Begin

 

repeat

      read(ch);

      if ch in ['a'..'z'] then a[ch]:=a[ch]+1;

Until ch='.';

 

for i:=1 to 255 do

begin

     if (chr(i) in ['a'..'z']) and (a[chr(i)]>0) then

     writeln(chr(i),a[chr(i)]);

end;

End.

Спрятать решение · ·
Суворова екатерина 02.04.2014 19:33

почему в задаете переменную ch, а в последнем условии пишете chr?

Константин Лавров

chr — функция языка Паскаль возвращающая символ по его коду.

Юрий 16.03.2016 04:40

Такое решение очень плохо читается, можно запутаться при многократном вызове функции chr, всё таки на экзамене не будет IDE и компилятора, лишь ручка и листочек.

Предлагаю такое:

 

program Task27;

 

var

c: char;

arr: array['a'..'z'] of integer;

 

begin

c := 'a';

while (c <> '.') do begin

read(c);

if (c in ['a'..'z']) then

arr[c] += 1;

end;

for c := 'a' to 'z' do begin

if (arr[c] <> 0) then

writeln(c, arr[c]);

end;

 

end.

 

 

Здесь также нет цикла в 255 итераций, не существенный выигрыш конечно, но это число (255) тоже может вылететь из головы. И "x += 1" можно заменить на "x := x + 1", хотя писать ручкой все эти символы не комильфо, легче запомнить "+=, *=, -=" и т.д., в принципе и запоминать нечего.