Задания
Версия для печати и копирования в MS Word
Тип Д19 C4 № 3119
i

На вход про­грам­мы по­да­ют­ся про­из­воль­ные ал­фа­вит­но-циф­ро­вые сим­во­лы. Ввод этих сим­во­лов за­кан­чи­ва­ет­ся точ­кой. Тре­бу­ет­ся на­пи­сать про­грам­му, ко­то­рая будет пе­ча­тать по­сле­до­ва­тель­ность строч­ных ан­глий­ских букв ('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.

Спрятать критерии
Критерии проверки:

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­нияБаллы
Про­грам­ма ра­бо­та­ет верно, т. е. опре­де­ля­ет ча­сто­ту встре­ча­ю­щих­ся букв вме­сте, для любых вход­ных дан­ных про­из­воль­но­го раз­ме­ра, про­смат­ри­ва­ет вход­ные дан­ные один раз, не со­дер­жит вло­жен­ных цик­лов, в тек­сте про­грам­мы не ана­ли­зи­ру­ет­ся каж­дая ан­глий­ская буква в от­дель­но­сти.

До­пус­ка­ет­ся на­ли­чие одной син­так­си­че­ской ошиб­ки.

4
Про­грам­ма со­став­ле­на верно, но со­дер­жит не­ра­ци­о­наль­но­сти: вход­ные дан­ные за­по­ми­на­ют­ся в мас­си­ве сим­во­лов или стро­ке или вход­ной поток про­смат­ри­ва­ет­ся не­сколь­ко раз, про­грам­ма может со­дер­жать вло­жен­ные циклы. До­пус­ка­ет­ся на­ли­чие не более трех син­так­си­че­ских оши­бок.3
Про­грам­ма со­став­ле­на в целом верно с вло­жен­ны­ми цик­ла­ми или без, или об­ра­ба­ты­ва­ет каж­дую букву явным об­ра­зом (26 или 52 опе­ра­то­ра IF или опе­ра­тор CASE, со­дер­жа­щий 26 или 52 ва­ри­ан­тов), но, воз­мож­но, вы­во­дит зна­че­ние не пер­вой по ал­фа­ви­ту из ис­ко­мых букв. Воз­мож­но в ре­а­ли­за­ции ал­го­рит­ма со­дер­жат­ся 1–2 ошиб­ки (ис­поль­зу­ет­ся знак «<»

вме­сто «>», «or» вме­сто «and» и т. п.). Воз­мож­но, не­кор­рект­но ор­га­ни­зо­ва­на ра­бо­та со вход­ным фай­лом. До­пус­ка­ет­ся на­ли­чие не более пяти син­так­си­че­ских оши­бок.

2
Про­грам­ма, воз­мож­но, не­вер­но ра­бо­та­ет при не­ко­то­рых вход­ных дан­ных, но по при­ве­ден­но­му тек­сту ре­ше­ния ясно, что эк­за­ме­ну­е­мый по­ни­ма­ет, из каких эта­пов долж­но со­сто­ять ре­ше­ние за­да­чи. Про­грам­ма, воз­мож­но, не­вер­но об­ра­ба­ты­ва­ет не­ко­то­рые вход­ные

дан­ные, на­при­мер, от­сут­ству­ет или пред­ло­жен не­кор­рект­ный ал­го­ритм об­ра­бот­ки строч­ных или про­пис­ных букв, или они под­счи­ты­ва­ют­ся по от­дель­но­сти, или про­грам­ма со­дер­жит ошиб­ку в ал­го­рит­ме по­ис­ка мак­си­му­ма. Воз­мож­но, вы­во­дит толь­ко ис­ко­мую букву и не вы­во­дит ко­ли­че­ство букв. До­пус­ка­ет­ся на­ли­чие не более семи син­так­си­че­ских оши­бок.

1
За­да­ние не вы­пол­не­но или вы­пол­не­но не­вер­но0
Мак­си­маль­ный балл4
Суворова екатерина 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", хотя пи­сать руч­кой все эти сим­во­лы не ко­миль­фо, легче за­пом­нить "+=, *=, -=" и т.д., в прин­ци­пе и за­по­ми­нать не­че­го.