≡ информатика
сайты - меню - вход - новости




Школа экспертов
Вернуться на основную страницу «Школы экспертов»

Ниже представлены ученические решения экзаменационных заданий. Оцените каждое из них в соответствии с критериями проверки заданий ЕГЭ. После нажатия кнопки «Проверить» вы узнаете правильный балл за каждое из решений. В конце будут подведены итоги.

Задание 3793
Задание 3794


Задание № 3793

На вход программе (как вариант, из входного файла 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)+l

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;

с, 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]+l

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


Пример 1.

Оцените это решение в баллах:

Пример 2.

Оцените это решение в баллах:

Пример 3.

Оцените это решение в баллах:

Пример 4.

Оцените это решение в баллах:



Задание № 3794

На вход программе подаются 366 строк, которые содержат информацию о среднесуточной температуре всех дней 2004 года. Формат каждой из строк следующий: сначала записана дата в виде dd.mm (на запись номера дня и номера месяца в числовом формате отводится строго два символа, день от месяца отделен точкой), затем через пробел записано значение температуры — число со знаком плюс или минус, с точностью до 1 цифры после десятичной точки. Данная информация отсортирована по значению температуры, то есть хронологический порядок нарушен. Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая будет выводить на экран информацию о месяце (месяцах) среднемесячная температура для которого (которых) наименее отклоняется от среднегодовой. В первой строке вывести среднегодовую температуру. Найденные значения дтя каждого из месяцев следует выводить в отдельной строке в следующем виде: номер месяца, значение среднемесячной температуры, отклонение от среднегодовой температуры.


Пояснение

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

 

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

DATA 31,29,31,30,31,30,31,31,30,31,30,31

DIM i, m, d(12) AS INTEGER

DIM tm(12)

DIM dat AS STRING *5

FOR i = 1 TO 12

tm(i) = 0

READ d(i)

NEXTi

ty = 0

'ty – среднегодовая температура

FOR i = 1 TO 366

INPUT dat, t

'Вычисляем номер месяца

m=(ASC(MID$(dat,4,1))-ASC("0"))*10+

ASC(MID$(dat,5,1))-ASC("0")

tm(m) = tm(m) + t

ty = ty + t

NEXT i

FOR i = 1 TO 12

tm(i) = tm(i) / d(i)

NEXT i

ty = ty / 366

min = 100

FOR i = 1 TO 12

IF ABS(tm(i) - ty) < min THEN min = ABS(tm(i) - ty)

NEXT i

PRINT "Среднегодовая температура = ";

PRINT USING "##.##"; ty

FOR i = 1 TO 12

IF ABS(ABS(tm(i) - ty) - min) < .0001 THEN

PRINT i;

PRINT USING "##.## "; tm(i); ABS(tm(i) - ty)

END IF

NEXT i

END

Const d:array[1..12] of integer =

(31,29,31,30,31,30,31,31,30,31,30,31);

var tm:array[1..12] of real;

m:1..12;

data:string[5];

min,ty,t:real;

i:integer;

begin

for i:=1 to 12 do

tm[i]:=0;

ty:=0;{среднегодовая температура}

for i:=1 to 366 do

begin

readln(data,t);

{вычисляем номер месяца}

m:=(ord(data[4])-ord('0'))*10

+ord(data[5])-ord('0');

tm[m]:=tm[m]+t;

ty:=ty+t;

end;

for i:=1 to 12 do

tm[i]:=tm[i]/d[i];

ty:=ty/366;

min:=100;

for i:=1 to 12 do

if abs(tm[i]-ty) < min then

min:=abs(tm[i]-ty);

writeln('Среднегодовая температура = ',ty:0:2);

for i:=1 to 12 do

if abs(abs(tm[i]-ty)-min)<0.0001 then

writeln(i,' ',tm[i]:0:2,' ',abs(tm[i]-ty):0:2);

readln

end.



Указания по оцениванию.

 

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

 

Критерии оце­ни­ва­ния вы­пол­не­ния заданияБаллы
Программа ра­бо­та­ет верно, т. е. опре­де­ля­ет все месяцы, в ко­то­рых сред­не­ме­сяч­ная тем­пе­ра­ту­ра ми­ни­маль­но от­кло­ня­ет­ся от среднегодовой, не со­дер­жит вло­жен­ных циклов, в тек­сте про­грам­мы не ана­ли­зи­ру­ет­ся каж­дый месяц в отдельности. До­пус­ка­ет­ся на­ли­чие в тек­сте про­грам­мы одной син­так­си­че­ской ошибки.4
Программа со­став­ле­на верно, но со­дер­жит вло­жен­ные циклы (oт 1 до 12 и от 1 до 366) и, возможно, за­по­ми­на­ет зна­че­ния всех тем­пе­ра­тур в массиве. До­пус­ка­ет­ся на­ли­чие от одной до трех син­так­си­че­ских ошибок.3
Программа со­став­ле­на в целом верно с вло­жен­ны­ми цик­ла­ми или без них, или об­ра­ба­ты­ва­ет каж­дый месяц явным об­ра­зом (12 опе­ра­то­ров IF или опе­ра­тор CASE, со­дер­жа­щий 12 вариантов), или пред­ва­ри­тель­но сор­ти­ру­ет вход­ные дан­ные в хро­но­ло­ги­че­ском порядке. Возможно, вы­во­дит зна­че­ние толь­ко од­но­го ме­ся­ца с ми­ни­маль­ным от­кло­не­ни­ем температуры. Воз­мож­но в ре­а­ли­за­ции ал­го­рит­ма со­дер­жат­ся 1–2 ошиб­ки (используется знак «<» вме­сто «>», «or» вме­сто «and» и тому подобное). До­пус­ка­ет­ся на­ли­чие не более пяти син­так­си­че­ских ошибок.2
Программа, возможно, не­вер­но ра­бо­та­ет при не­ко­то­рых вход­ных данных, но по при­ве­ден­но­му тек­сту ре­ше­ния ясно, что эк­за­ме­ну­е­мый понимает, из каких эта­пов долж­но со­сто­ять ре­ше­ние задачи.Программа, возможно, не­кор­рект­но опре­де­ля­ет номер ме­ся­ца или не­вер­но вво­дит или вы­во­дит данные, или со­дер­жит ошиб­ку в ал­го­рит­ме по­ис­ка ми­ни­му­ма или сред­ней температуры, или от­кло­не­ние бе­рет­ся не по аб­со­лют­ной величине. До­пус­ка­ет­ся на­ли­чие не более семи син­так­си­че­ских ошибок.1
Задание не вы­пол­не­но или вы­пол­не­но неверно.0
Максимальный балл4


Пример 1.

 

Оцените это решение в баллах:

Пример 2.

Оцените это решение в баллах:

Пример 3.

Оцените это решение в баллах:

Пример 4.

Оцените это решение в баллах:

Пример 5.

Оцените это решение в баллах:

Пример 6.

Оцените это решение в баллах:



Наверх
Вернуться на основную страницу «Школы экспертов»