Найти самого умного ученика - PascalABC.NET
Формулировка задачи:
Не могу решить программу:
На входе в программе - N учеников. (10<n<100)
Каждая из N строк имеет следующий формат:
<Фамилия> <Имя> <Оценки>,
Где <Фамилия> - строка, состоящая не более чем из 20 символов,
<Имя> - строка, состоящая не более чем из 15 символов,
<Оценки> - три целых числа, отделяемых пробелом.
<Фамилия>,<Имя> и <Оценки> разделены одним пробелом.
Вывод: Три лучших по среднему баллу учеников.
Заранее спасибо.
Решение задачи: «Найти самого умного ученика»
textual
Листинг программы
uses System.IO;
begin
writeln(
string.Join(NewLine,
&File.ReadAllLines('thread1564783.txt'). OrderByDescending(s ->
s.split(' ')[2].split(' ').Select(StrToInt).Average()).Take(3).ToArray()
)
);
end.
Объяснение кода листинга программы
В данном коде используется язык программирования PascalABC.Net.
- Строка
uses System.IO;указывает на то, что в программе используется система ввода/вывода. - Функция
writelnиспользуется для вывода информации на экран. - Строка
string.Join(NewLine, ...)используется для объединения строк в одну строку, где каждая строка разделяется символом новой строки (NewLine). File.ReadAllLines('thread1564783.txt')читает все строки из файла 'thread1564783.txt'.OrderByDescending(s -> s.split(' ')[2].split(' ').Select(StrToInt).Average())сортирует строки по убыванию среднего значения чисел, полученных из строк, разделенных на подстроки по пробелу, преобразованных в числа и усредненных.Take(3)ограничивает количество строк до трех.ToArray()преобразует последовательность в массив.- Результат выводится на экран с помощью
writeln.