Поля разделены одним или несколькими пробелами. Требуется организовать текстовый файл с полями - 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы