Поля разделены одним или несколькими пробелами. Требуется организовать текстовый файл с полями - PascalABC.NET
Формулировка задачи:
Каждая строка текстового файла имеет следующую
структуру:
-----------------------------------------------------
| Фамилия | Факультет | Группа | Средний |
| студента |__________|________| балл____|
-----------------------------------------------------
Поля разделены одним или несколькими пробелами. Внутри поля
пробелы не допускаются. Требуется организовать текстовый файл
с полями
--------------------------------------------
| Факультет | Группа | Средний балл|
|__________|________| по группе___|
--------------------------------------------
и определить группы с наибольшим и наименьшим средним баллом.
Пробелы пришлось заменить подчеркиваниями ибо их удаляет форум.
| и ---- проставлены для наглядности.
Вот, что получилось набросать из куска проверки:
Не пинайте сильно пожалуйста. Очень нужна помощь.
Листинг программы
- for i:= 1 to 10 do;
- if flag1(i)<>0 then
- begin
- f_check:=f(i);
- g_check:=g(i);
- flag1(i):=1;
- mark:=m(i);
- s_inGroup:=1;
- for j:= 1 to 10 do;
- if flag1(j)= 0 then
- begin
- if (f(j)=f_check) and (g(j)=g_check) then
- begin
- mark += m(j);
- s_inGroup += 1;
- flag1(j):=1;
- end
- end
- end
Решение задачи: «Поля разделены одним или несколькими пробелами. Требуется организовать текстовый файл с полями»
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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д