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


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

На вход в программе подаются сведения о сдаче экзаменов учениками 9─х классов, некоторой средней школы. В первой строке сообщается количество учеников N, которое не меньше 10, не превосходит 100. Каждая из N строк имеет следующий формат: <Фамилия><Имя><оценки>

где<Фамилия>─строка, состоящая не более чем из 20 символов <Имя>─строка, состоящая не более чем из 15 символов <оценки>─через пробел три целых числа, соответствующие оценкам по пятибалльной системе. <Фамилия>, <Имя> и <оценки> разделены одним пробелом.

требуется написать программу, которая будет выводить на экран имена 3─х лучших по среднему баллу учеников.

Решение.

type uchenik =record

Fam:string[20];

name:string[15];

b1,b2,b3:integer;

end;

var

srB:array [1..100] of real;

i,k,l,p,N,m1,m2,m3:integer;

max1,max2,max3,sr:real;

c:char;

a:array[1..100] of uchenik;

begin

read(n); //считали количество учеников

if n>=10 then begin

for I:=1 to n do

begin

a[i].fam:='';

repeat read(c);

a[i].fam:= a[i].fam+c;

until c=' '; //считали фамилию

repeat read(c);

a[i].name:= a[i].name+c;

until c=' '; //считали имя

read(m1); a[i].b1:=m1;

read(m2); a[i].b2:=m2;

read(m3); a[i].b3:=m3;

end; //считали балы

for i:= 1 to n do

srB[i]:= a[i].b1+a[i].b2+a[i].b3; //создали массив, содержащий средние балы

 

max1:=srB[1]; max2:=0;max3:=0;

for i:= 2 to n do begin //нашли три максимума

if srB[i]>max1 then begin max3:=max2; max2:=max1; max1:=srB[i]; k:=i; end

else if srB[i]>max2 then begin max3:=max2; max2:=srB[i]; l:=i; end

else if srB[i]>max3 then begin max3:=srB[i]; p:=i; end;

end;

for i:=1 to n do

if srB[i]>= max3 then writeln(a[i].fam, a[i].name);

end

else writeln('учеников не может быть меньше 10');

end.

 

Приведём решение Ильи Муратова, Python.

 

n=int(input())

marks = []

for i in range(n):

    fname, lname, mark1, mark2, mark3 = input().split(" ")

    name = fname + " " + lname

    mark_sum = int(mark1) + int(mark2) + int(mark3)

    marks.append((mark_sum, name))

marks.sort(reverse=True) # сортировка проходит по первому значению в tuple

for i in range(3):

    print(marks[i][1])