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

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

Рай­он­ный ме­то­дист ре­ши­ла вы­яс­нить номер школы, уче­ни­ки ко­то­рой на­бра­ли наи­боль­ший сред­ний балл, с точ­но­стью до целых.

Про­грам­ма долж­на вы­ве­сти на экран номер такой школы и её сред­ний балл.

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

На­пи­ши­те эф­фек­тив­ную, в том числе и по ис­поль­зу­е­мой па­мя­ти, про­грам­му (ука­жи­те ис­поль­зу­е­мую вер­сию языка про­грам­ми­ро­ва­ния, на­при­мер Borland Pascal 7.0), ко­то­рая долж­на вы­ве­сти на экран тре­бу­е­мую ин­фор­ма­цию. Из­вест­но, что ин­фор­ма­ти­ку сда­ва­ло боль­ше 5-ти уче­ни­ков рай­о­на. Также из­вест­но, что в рай­о­не школы с не­ко­то­ры­ми но­ме­ра­ми не су­ще­ству­ют.

На вход про­грам­ме сна­ча­ла подаётся число уче­ни­ков, сда­вав­ших эк­за­мен. В каж­дой из сле­ду­ю­щих N строк на­хо­дит­ся ин­фор­ма­ция об уче­ни­ках в фор­ма­те:

 

<Фа­ми­лия> <Имя> <Номер школы> <Ко­ли­че­ство бал­лов>

 

где <Фа­ми­лия>  — стро­ка, со­сто­я­щая не более чем из 30 сим­во­лов без про­бе­лов,

<Имя>  — стро­ка, со­сто­я­щая не более чем из 20 сим­во­лов без про­бе­лов,

<Номер школы>  — целое число в диа­па­зо­не от 1 до 99,

<Ко­ли­че­ство бал­лов>  — целое число в диа­па­зо­не от 1 до 100.

Эти дан­ные за­пи­са­ны через про­бел, причём ровно один между каж­дой парой (то есть всего по три про­бе­ла в каж­дой стро­ке).

При­мер вход­ной стро­ки:

Ива­нов Иван 50 87

При­мер вы­ход­ных дан­ных:

Школа с луч­шим сред­ним бал­лом 10

Наи­боль­ший сред­ний балл = 84

Дру­гой ва­ри­ант вы­ход­ных дан­ных:

Всего школ: 3

Наи­боль­ший сред­ний балл = 78

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

Ре­ше­ние.

ПАС­КАЛЬ

var points, npupils, mean:array[1..100] of integer;

ch:char;

i,N, school,p,k, max:integer;

begin

for i:=1 to 100 do {об­ну­ля­ем мас­си­вы}

begin

points[i]:= 0;

mean[i]:=0;

npupils[i]:=0;

end;

readln(N); {счи­та­ли ко­ли­че­ство строк}

for i:=1 to N do {пе­ре­би­ра­ем все вход­ные стро­ки}

begin

repeat

read(ch)

until ch=' ';{счи­та­на фа­ми­лия}

repeat

read(ch) until ch=' ';{счи­та­но имя}

readln(school,p); {счи­та­ли номер школы и балл уче­ни­ка}

points[school]:=points[school] + p; {на­ка­пи­ли­ва­ем балл уче­ни­ков для расчёта сред­не­го в даль­ней­шем}

npupils[school]:=npupils[school] + 1; {на­кап­ли­ва­ем ко­ли­че­ство уче­ни­ков в школе}

end;

for i:=1 to 100 do {Вы­чис­ля­ем сред­ний балл в каж­дой школе с точ­но­стью до це­ло­го}

begin

mean[i]:= points[i] div npupils[i];

end;

max:=-1;

for i:=1 to 100 do {На­хо­дим школы с наи­боль­шим сред­ним бал­лом и за­по­ми­на­ем их ко­ли­че­ство}

begin

if mean[i]>max then

begin

max:=mean[i];

k:=1;

end

else if mean[i]=max then

begin

k:=k+1;

end;

end;

if k > 1 then

begin

writeln('Всего школ:', k);

writeln('Наи­боль­ший сред­ний балл =', max);

end

else

begin

writeln('Школа с луч­шим сред­ним бал­лом');

writeln('Наи­боль­ший сред­ний балл =', max);

end;

end.

 

При­во­дим ре­ше­ние Ва­лен­ти­на До­бринг­ско­го на C++.

 

#include

using namespace std;

void main()

{

const int size = 99;

struct base

{

int amount;

int sum;

};

base s[size];

int N = 0;

int tmp=0;

int count=0;

int max=0;

int j = 0;

char surname[30]; name[20];

cin >> N;

for (int i = 0; i < size; i++)

{

s[i].amount = 0;

s[i].sum = 0;

}

for (int i = 0; i < N; i++)

{

cin >> surname >> name >> j >> tmp;

s[j-1].amount++;

s[j-1].sum = s[j-1].sum + tmp;

}

for (int i = 0; i < size; i++)

{

if (max < s[i].sum)

{

max = s[i].sum;

count = 1;

tmp = i;

}

if (max == s[i].sum)

count++;

}

if (count == 1)

cout<<"Nomer school: "<<<"Sredniy ball: "<else

cout << "Kol-vo school: " << count << endl

<< "Sredniy ball: " << max / s[tmp].amount << endl;

system("pause");

}

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

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­нияБаллы
Про­грам­ма ра­бо­та­ет для любых вход­ных дан­ных про­из­воль­но­го раз­ме­ра и на­хо­дит ответ, не со­хра­няя вход­ные дан­ные в мас­си­ве, раз­мер ко­то­ро­го со­от­вет­ству­ет числу N (ко­ли­че­ству за­про­сов). Про­грам­ма про­смат­ри­ва­ет вход­ные дан­ные один раз. До­пус­ка­ет­ся на­ли­чие в тек­сте про­грам­мы одной син­так­си­че­ской ошиб­ки: про­пу­щен или не­вер­но ука­зан знак пунк­ту­а­ции, не­вер­но на­пи­са­но или про­пу­ще­но за­ре­зер­ви­ро­ван­ное слово языка про­грам­ми­ро­ва­ния, не опи­са­на или не­вер­но опи­са­на пе­ре­мен­ная, при­ме­ня­ет­ся опе­ра­ция, не­до­пу­сти­мая для со­от­вет­ству­ю­ще­го типа дан­ных (если одна и та же ошиб­ка встре­ча­ет­ся не­сколь­ко раз, то это счи­та­ет­ся за одну ошиб­ку).4
Про­грам­ма ра­бо­та­ет верно, но вход­ные дан­ные за­по­ми­на­ют­ся в мас­си­ве, раз­мер ко­то­ро­го со­от­вет­ству­ет числу N. Этот мас­сив, воз­мож­но, потом сор­ти­ру­ет­ся. До­пус­ка­ет­ся на­ли­чие от одной до трех син­так­си­че­ских оши­бок. Воз­мож­но, в прин­ци­пи­аль­но верно ор­га­ни­зо­ван­ном вводе дан­ных есть одна ошиб­ка (на­при­мер, ис­поль­зо­ва­ние read вме­сто readln в Пас­ка­ле или не­вер­ное счи­ты­ва­ние стро­ки в C++). Три балла также вы­став­ля­ет­ся, если в эф­фек­тив­ной про­грам­ме, удо­вле­тво­ря­ю­щей кри­те­ри­ям вы­став­ле­ния 4 бал­лов, есть одна ошиб­ка, в ре­зуль­та­те ко­то­рой про­грам­ма ра­бо­та­ет не­вер­но на не­ко­то­рых на­бо­рах не­ти­пич­ных вход­ных дан­ных.3
Про­грам­ма ра­бо­та­ет в целом верно, эф­фек­тив­но или нет, но в ре­а­ли­за­ции ал­го­рит­ма со­дер­жит­ся до двух оши­бок (не­вер­ная ини­ци­а­ли­за­ция счётчи­ков, до­пу­ще­на ошиб­ка в прин­ци­пи­аль­но верно ор­га­ни­зо­ван­ной сор­ти­ров­ке или ал­го­рит­ме по­ис­ка ми­ни­маль­ных эле­мен­тов, ис­поль­зу­ет­ся знак “<” вме­сто “<=”, “or” вме­сто “and” и тому по­доб­ное).

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

2
Про­грам­ма, воз­мож­но, не­вер­но ра­бо­та­ет при не­ко­то­рых вход­ных дан­ных, но по при­ведённому тек­сту ре­ше­ния ясно, что эк­за­ме­ну­е­мый по­ни­ма­ет, из каких эта­пов долж­но со­сто­ять ре­ше­ние за­да­чи. При ис­поль­зо­ва­нии сор­ти­ров­ки она может быть ре­а­ли­зо­ва­на прин­ци­пи­аль­но не­вер­но (на­при­мер, вме­сто двух цик­лов ис­поль­зу­ет­ся один), или до­пу­ще­на прин­ци­пи­аль­ная ошиб­ка в по­ис­ке нуж­ных эле­мен­тов. Всего до­пус­ка­ет­ся до 4 раз­лич­ных оши­бок в ре­а­ли­за­ции ал­го­рит­ма, в том числе опи­сан­ных в кри­те­ри­ях при­сво­е­ния двух бал­лов. До­пус­ка­ет­ся на­ли­чие от одной до семи син­так­си­че­ских оши­бок, опи­сан­ных выше.1
За­да­ние не вы­пол­не­но или вы­пол­не­но не­вер­но.0
Мак­си­маль­ный балл4
Источник: РЕШУ ЕГЭ