Поля разделены одним или несколькими пробелами. Требуется организовать текстовый файл с полями - PascalABC.NET
Формулировка задачи:
Каждая строка текстового файла имеет следующую
структуру:
-----------------------------------------------------
| Фамилия | Факультет | Группа | Средний |
| студента |__________|________| балл____|
-----------------------------------------------------
Поля разделены одним или несколькими пробелами. Внутри поля
пробелы не допускаются. Требуется организовать текстовый файл
с полями
--------------------------------------------
| Факультет | Группа | Средний балл|
|__________|________| по группе___|
--------------------------------------------
и определить группы с наибольшим и наименьшим средним баллом.
Пробелы пришлось заменить подчеркиваниями ибо их удаляет форум.
| и ---- проставлены для наглядности.
Вот, что получилось набросать из куска проверки:
Не пинайте сильно пожалуйста. Очень нужна помощь.
Решение задачи: «Поля разделены одним или несколькими пробелами. Требуется организовать текстовый файл с полями»
textual
Листинг программы
{$reference System.Core.dll} uses System, System.Linq, System.IO, System.Collections.Generic; type kv = KeyValuePair<string, string>; function parts(s : string) : array of string; begin result := s.Split(' '.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); end; procedure PrintData(s : string; info : array of string); begin writeln(s + NewLine, Format('Факультет: {0} Группа: {1} Средний балл: {2}', info[0], info[1], info[2])); end; function func(s : string) : integer; begin result := Integer.Parse(Parts(s)[3]) end; begin var query := &File.ReadAllLines('thread1567105.txt'). GroupBy((s : string) -> new kv(parts(s)[1], parts(s)[2])). Select((x : IGrouping<kv, string>) -> Format('{0,15}{1,15}{2,15}', x.Key.Key, x.Key.Value, FloatToStr(x.Average(func)))); &File.WriteAllText('thread1567105_2.txt', Format('{0,15}{1,15}{2,15}', 'Факультет', 'Группа', 'Средний балл') + NewLine + string.Join(NewLine, query.ToArray())); var sort_query := query.OrderBy((s : string) -> Parts(s)[2]); PrintData('Минимальный средний балл ->', Parts(sort_query.First())); PrintData('Максимальный средний балл ->', Parts(sort_query.Last())); end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д