Из текстового файла 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д