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

На вход про­грам­ме (как ва­ри­ант, из вход­но­го файла text.dat) подаётся текст на ан­глий­ском языке. Ввод этих сим­во­лов за­кан­чи­ва­ет­ся точ­кой (дру­гие сим­во­лы, от­лич­ные от «.» во вход­ных дан­ных от­сут­ству­ют; в про­грам­ме на языке Бей­сик сим­во­лы можно вво­дить по од­но­му в стро­ке, пока не будет вве­де­на точка). Тре­бу­ет­ся на­пи­сать как можно более эф­фек­тив­ную про­грам­му (ука­жи­те ис­поль­зу­е­мую вер­сию языка про­грам­ми­ро­ва­ния, на­при­мер, Borland Pascal 7.0), ко­то­рая будет опре­де­лять и вы­во­дить на экран, какая ан­глий­ская буква встре­ча­ет­ся во вход­ной по­сле­до­ва­тель­но­сти чаще всего и сколь­ко имен­но раз. Строч­ные и про­пис­ные буквы при этом не раз­ли­ча­ют­ся. Если таких букв не­сколь­ко, то про­грам­ма долж­на вы­во­дить на экран ту из них, ко­то­рая стоит по ал­фа­ви­ту рань­ше.

На­при­мер, пусть файл со­дер­жит сле­ду­ю­щую ин­фор­ма­цию:

It is not a simple task. Yes!

Тогда чаще всего встре­ча­ют­ся буквы I, S, T. (слово Yes в под­сче­те не участ­ву­ет, так как рас­по­ло­же­но после точки). Сле­до­ва­тель­но, в дан­ном слу­чае, про­грам­ма долж­на вы­ве­сти

I 3.

Спрятать решение

Ре­ше­ние.

Про­грам­ма чи­та­ет текст до точки один раз, под­счи­ты­вая в мас­си­ве, хра­ня­щем 26 целых чисел, ко­ли­че­ство вхож­де­ний каж­дой из букв. Сам текст при этом не за­по­ми­на­ет­ся. Затем в этом мас­си­ве шлет­ся пер­вое вхож­де­ние мак­си­маль­но­го эле­мен­та. Баллы на­чис­ля­ют­ся толь­ко за про­грам­му, ко­то­рая ре­ша­ет за­да­чу хотя бы для част­но­го слу­чая (на­при­мер, для строк, со­сто­я­щих не более чем из 255 сим­во­лов).

 

Бей­сикПас­каль

DIM i, imах, с, a(26) AS INTEGER

OPEN "TEXT.DAT" FOR INPUT AS #1

S$ = INPUT$(1,#1)

DO WHILE NOT (S$ = ".")

c = ASC(S$)

IF(c>=ASC("A")AND c<=ASC("Z")) THEN

с = с - ASC("A") + 1

ENDIF

IF(c>=ASC("a")AND c<=ASC("z")) THEN

с = с - ASC("a") + 1

ENDIF

IF(c >=1 AND c<=26) THEN a(c)=a(c)+1

S$ = INPUT$(1,#1)

LOOP

imax = 1

FOR i = 2 TO 26

IF a(i) > a(imax) THEN imax = i

NEXT i

PRINT CHR$(imax + 64), a(imax)

END

var a:array['A'..'Z'] of integer;

c, cmax: char;

begin

assign(input'text. dat');

reset(input);

for c:='A'to'Z' do a[c]:=0;

repeat

read(input, c);

c:=upcase(c);

if c in['A'...'Z']then

a[c]:=a[c]+1

until c='.';

cmax := 'A';

for c:='B'to'Z'do

if a[c] > a[cmax] then

cmax := c;

writeln(cmax,' ',a[cmax])

end.

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

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

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

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

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

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

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

1
За­да­ние не вы­пол­не­но или вы­пол­не­но не­вер­но0
Мак­си­маль­ный балл4