Из текстового файла input.txt с данными вывести информацию в файл output.txt по заданному условию - PascalABC.NET
Формулировка задачи:
Дан текстовый файл input.txt содержащий в первой строке кол-во данных, в каждой следующей чередующиеся данные: фамилии и оценки за 3 экзамена. Например:
4
Иванов
8 8 7
Петров
5 6 7
Сидоров
4 7 6
Севко
4 5 4
Вывести в отдельный файл output.txt в алфавитном порядке возрастания среднего балла, фамилии и средний балл студентов.
Решение задачи: «Из текстового файла input.txt с данными вывести информацию в файл output.txt по заданному условию»
textual
Листинг программы
- type
- tStud = record
- Name : String[10];
- A, B, C : Integer;
- Sr : Real;
- end;
- begin
- var F := OpenRead('input.txt');
- var count := F.ReadLnInteger;
- WriteLn('Количество сведений: ', count);
- var a : array of tStud;
- SetLength(a, count);
- for var i := 0 to count-1 do
- begin
- a[i].Name := F.ReadLnString;
- a[i].A := F.ReadInteger;
- a[i].B := F.ReadInteger;
- a[i].C := F.ReadLnInteger;
- a[i].Sr := (a[i].A + a[i].B + a[i].C) / 3;
- WriteLnFormat('{0}) {1}: {2} {3} {4} <{5:0.00}>', i+1, a[i].Name, a[i].A, a[i].B, a[i].C, a[i].Sr);
- end;
- F.Close;
- var swaps : Boolean;
- repeat
- swaps := False;
- for var i := 0 to count-2 do
- if a[i].Name > a[i+1].Name then
- begin
- Swap(a[i], a[i+1]);
- swaps := True;
- end
- else if (a[i].Name = a[i+1].Name) and (a[i].Sr > a[i+1].Sr) then
- begin
- Swap(a[i], a[i+1]);
- swaps := True;
- end
- until Not swaps;
- var O := OpenWrite('output.txt');
- foreach var S : tStud in a do
- O.WriteLn(S.Name, #32, S.Sr);
- O.Close;
- end.
Объяснение кода листинга программы
- Открывается файл input.txt для чтения.
- Считывается количество строк в файле.
- Создается массив a типа tStud, который будет содержать информацию о студентах.
- Устанавливается длина массива a равной количеству строк в файле.
- В цикле считываются данные о каждом студенте и записываются в массив a.
- Вычисляется средний балл (Sr) для каждого студента.
- Выводится информация о каждом студенте в формате: номер) Имя: A B C
. - Открывается файл output.txt для записи.
- В цикле записываются данные о каждом студенте в файл output.txt.
- Файл output.txt закрывается.
- В цикле выполняется сортировка массива a по имени и среднему баллу (Sr).
- Пока есть строки, которые необходимо отсортировать, выполняется обмен значениями между соседними элементами массива a.
- Цикл повторяется до тех пор, пока массив a не будет отсортирован.
- Закрывается файл output.txt.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д