** вход про­грам­ме по­да­ют­ся све­де­ния о сдаче эк­за­ме­нов уче­ни­ка­ми 9-х клас­сов...

0 голосов
91 просмотров

На вход про­грам­ме по­да­ют­ся све­де­ния о сдаче эк­за­ме­нов уче­ни­ка­ми 9-х клас­сов не­ко­то­рой сред­ней школы. В пер­вой стро­ке со­об­ща­ет­ся ко­ли­че­ство уче­ни­ков N, ко­то­рое не мень­ше 10, но не пре­вос­хо­дит 100, каж­дая из сле­ду­ю­щих N строк имеет сле­ду­ю­щий формат:
<Фамилия> <Имя> <оценки>,
где <Фамилия> – строка, со­сто­я­щая не более чем из 20 символов, <Имя> – строка, со­сто­я­щая не более чем из 15 символов, <оценки> – через про­бел три целых числа, со­от­вет­ству­ю­щие оцен­кам по пя­ти­балль­ной системе. <Фамилия> и <Имя>, а также <Имя> и <оценки> раз­де­ле­ны одним пробелом. При­мер вход­ной строки:
Иванов Петр 4 5 3
Требуется написать программу,которая будет выводить на экран фамилии и имена худшего и лучшего по среднему баллу учеников.

Заранее спасибо за помощь


Информатика (94 баллов) | 91 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
// PascalABC.NET 3.3, сборка 1627 от 27.01.2018
// Внимание! Если программа не работает, обновите версию!

begin
  var n:=ReadlnInteger;
  if not n.InRange(10,100) then begin
    Writeln('Ожидалось значение от 10 до 100');
    exit
    end;
  var famh,namh,faml,naml:string;
  var (hball,lball):=(-1.0,16.0);
  loop n do begin
    var a:=ReadlnString.ToWords;
    var avg:=(a[2].ToReal+a[3].ToReal+a[4].ToReal)/3;
    if avg>hball then (famh,namh,hball):=(a[0],a[1],avg)
    else
      if avg    end;
  Writeln;
  Println('Лучший',famh,namh);
  Println('Худший',faml,naml)
end.
(150k баллов)