Найти самого умного ученика - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д