✎ Задать свой вопрос   *более 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, просмотры: ☺ 3577 ⌚ 10.04.2014. информатика 10-11 класс

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

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

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

Последние решения
(прикреплено изображение) [удалить]
✎ к задаче 34821
(прикреплено изображение) [удалить]
✎ к задаче 34819
(прикреплено изображение) [удалить]
✎ к задаче 34829
(прикреплено изображение) [удалить]
✎ к задаче 34827
f(x)=e^(x)
f`(x)=e^(x)


L= ∫ ^(1)_(0)sqrt(1+(e^(x))^2) dx= ∫ ^(1)_(0)sqrt(1+e^(2x)) dx=

замена
sqrt(1+e^(2x))=t
1+e^(2x)=t^2
e^(2x)=t^2-1

2x=ln(t^2-1)
x=(1/2)*ln(t^2-1)
dx=(1/2) *(1/(t^2-1))* (t^2-1)`dt

dx=tdt /(t^2-1)

Вычисляю неопределенный интеграл, чтоб не связываться со сменой пределов интегрирования

∫ sqrt(1+e^(2x)) dx= ∫ t* tdt/(t^2-1)= ∫ (t^2-1+1)dt/(t^2-1)=

= ∫ (1 + 1/(t^2-1))dt

= t + (1/2) ln|(t-1)/(t+1)|+C= sqrt(1+e^(2x)) + (1/2)* ln |(sqrt(1+e^(2x))-1)/(sqrt(1+e^(2x))+1)|+C

∫ ^(b)_(a)f(x)dx=F(b)-F(a)

О т в е т. sqrt(1+e^(2)) + (1/2)* ln |(sqrt(1+e^(2))-1)/(sqrt(1+e^(2))+1)|-

sqrt(1+e^(0)) + (1/2)* ln |(sqrt(1+e^(0))-1)/(sqrt(1+e^(0))+1)|
[удалить]
✎ к задаче 34824