✎ Задать свой вопрос   *более 30 000 пользователей получили ответ на «Решим всё»

Задача 894 На вход программе подаются сведения о

УСЛОВИЕ:

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

<Фамилия> <Имя> <оценки>,

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

Иванов Петр 4 5 3

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

РЕШЕНИЕ:

const LIM = 100;
var Info: array[1..LIM] of record
name: string;
sum: integer;
end;
i, k, N, mark, min1, min2, min3: integer;
c: char;
begin
readln(N);
{ ввод исходных данных }
for i:=1 to N do begin
Info[i].name := '';
for k:=1 to 2 do
repeat
read(c);
Info[i].name := Info[i].name + c;
until c = ' ';
Info[i].sum := 0;
for k:=1 to 3 do begin
read(mark);
Info[i].sum := Info[i].sum + mark;
end;
readln;
end;
{ поиск трех минимальных }
min1 := 20; min2 := 20; min3 := 20;
for i:=1 to N do begin
if Info[i].sum <min1 then begin
min3 := min2; min2 := min1;
min1 := Info[i].sum;
end
else if Info[i].sum <min2 then begin
min3 := min2;
min2 := Info[i].sum;
end
else if Info[i].sum <min3 then
min3 := Info[i].sum;
end;
{ вывод результата }
for i:=1 to N do
if Info[i].sum <= min3 then
writeln(Info[i].name);
end.

Вопрос к решению?
Нашли ошибку?

Добавил slava191, просмотры: ☺ 3330 ⌚ 10.04.2014. информатика 10-11 класс

Решения пользователелей

Хочешь предложить свое решение? Войди и сделай это!
Увы, но свой вариант решения никто не написал... Будь первым!

Написать комментарий

Последнии решения
vector{a}×vector{b}=(-2;1;7)

Векторы коллинеарны ⇒ их координаты пропорциональны

-2: α =1:3=7: β ⇒
-2: α =1:3

α =-6


1:3=7: β

β =21
(прикреплено изображение) [удалить]
✎ к задаче 31067
Составим уравнение плоскости, проходящей через три точки A, B, C
(прикреплено изображение) [удалить]
✎ к задаче 31068
vector{F}=(-4;-4;-4)
vector{AB}=(12-11;-10-(-9);3-5) =(1;-1-2)- плечо силы

vector{M}= vector{F}× vector{AB}
(прикреплено изображение) [удалить]
✎ к задаче 31065
Δ KFM подобен Δ DFM ( KM || DA)

Из подобия следует пропорциональность сторон

KM: DA= FK: FD

KM:15 =3 : 5

КМ=9 (см)
(прикреплено изображение) [удалить]
✎ к задаче 31066
vector{BC}=(2/3)vector{a}+(4/3)vector{b}

Решение.
По правилу треугольника
vector{АК}+vector{КC}=vector{AC}
и
vector{BM}+vector{MC}=vector{BC} ⇒ (т.к. vector{MC}=(1/2)vector{АC}

vector{BC}=vector{b}+(1/2)*vector{AC}=

=vector{b}+(1/2)vector{АК}+(1/2)vector{КC}=

=vector{b}+(1/2)vector{a}+(1/2)*(1/2) vector{BC}.

Итак,
vector{BC}=vector{b}+(1/2)vector{a}+(1/2)*(1/2) vector{BC}.

(3/4)vector{BC}=vector{b}+(1/2)vector{a}

vector{BC}=(4/3)*vector{b}+(4/3)*(1/2)vector{a}
[удалить]
✎ к задаче 31063