Поля разделены одним или несколькими пробелами. Требуется организовать текстовый файл с полями - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Каждая строка текстового файла имеет следующую структуру: ----------------------------------------------------- | Фамилия | Факультет | Группа | Средний | | студента |__________|________| балл____| ----------------------------------------------------- Поля разделены одним или несколькими пробелами. Внутри поля пробелы не допускаются. Требуется организовать текстовый файл с полями -------------------------------------------- | Факультет | Группа | Средний балл| |__________|________| по группе___| -------------------------------------------- и определить группы с наибольшим и наименьшим средним баллом. Пробелы пришлось заменить подчеркиваниями ибо их удаляет форум. | и ---- проставлены для наглядности. Вот, что получилось набросать из куска проверки:
Листинг программы
  1. for i:= 1 to 10 do;
  2. if flag1(i)<>0 then
  3. begin
  4. f_check:=f(i);
  5. g_check:=g(i);
  6. flag1(i):=1;
  7. mark:=m(i);
  8. s_inGroup:=1;
  9. for j:= 1 to 10 do;
  10. if flag1(j)= 0 then
  11. begin
  12. if (f(j)=f_check) and (g(j)=g_check) then
  13. begin
  14. mark += m(j);
  15. s_inGroup += 1;
  16. flag1(j):=1;
  17. end
  18. end
  19. end
Не пинайте сильно пожалуйста. Очень нужна помощь.

Решение задачи: «Поля разделены одним или несколькими пробелами. Требуется организовать текстовый файл с полями»

textual
Листинг программы
  1. {$reference System.Core.dll}
  2. uses System, System.Linq, System.IO, System.Collections.Generic;
  3. type
  4.   kv = KeyValuePair<string, string>;
  5.  
  6. function parts(s : string) : array of string;
  7. begin
  8.   result := s.Split('  '.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
  9. end;
  10.  
  11. procedure PrintData(s : string; info : array of string);
  12. begin
  13.   writeln(s + NewLine,
  14.     Format('Факультет: {0} Группа: {1} Средний балл: {2}',
  15.            info[0], info[1], info[2]));
  16. end;
  17. function func(s : string) : integer;
  18. begin
  19.   result := Integer.Parse(Parts(s)[3])
  20. end;
  21.  
  22. begin
  23.   var query := &File.ReadAllLines('thread1567105.txt').
  24.                   GroupBy((s : string) -> new kv(parts(s)[1], parts(s)[2])).
  25.                   Select((x : IGrouping<kv, string>) ->
  26.                          Format('{0,15}{1,15}{2,15}', x.Key.Key, x.Key.Value, FloatToStr(x.Average(func))));
  27.  
  28.   &File.WriteAllText('thread1567105_2.txt',
  29.     Format('{0,15}{1,15}{2,15}', 'Факультет', 'Группа', 'Средний балл') + NewLine +
  30.     string.Join(NewLine, query.ToArray()));
  31.  
  32.   var sort_query := query.OrderBy((s : string) -> Parts(s)[2]);
  33.   PrintData('Минимальный средний балл ->', Parts(sort_query.First()));
  34.   PrintData('Максимальный средний балл ->', Parts(sort_query.Last()));
  35. end.

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


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

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

11   голосов , оценка 4.091 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы