Оставить в файле сведения только о тех студентах, которые успешно сдали сессию - Free Pascal
Формулировка задачи:
5)Имеется файл содержащий сведения о студентах: Фамилия, оценки по трём предметам, номер группы. Оставить в файле сведения только о тех студентах, которые успешно сдали сессию и вывести на печать всех задолжников.
Решение задачи: «Оставить в файле сведения только о тех студентах, которые успешно сдали сессию»
textual
Листинг программы
const ns = 'student.txt'; nu = 'temp.tmp'; nz = 'zadolzn.txt'; var s, u, z: text; f, t, p: string; o: array [1..3] of integer; i, err: integer; b, q: boolean; begin assign(s, ns); reset(s); assign(u, nu); rewrite(u); assign(z, nz); rewrite(z); q := false; while not eof(s) do begin readln(s, t); p := t; f := copy(t, 1, pos(' ', t)); delete(t, 1, pos(' ', t)); b := false; for i := 1 to 3 do begin val(copy(t, 1, pos(' ', t) - 1), o[i] , err); delete(t, 1, pos(' ', t)); b := b or (o[i] <= 2) end; q := q or b; if b then writeln(z, p) else writeln(u, p) end; close(s); close(u); if q then begin writeln('Неуспевающие студенты:'); reset(z); while not eof(z) do begin readln(z, t); writeln(t); end; close(z); erase(s); rename(u, ns) end else begin writeln('Неуспевающих студентов нет'); close(z); erase(z); erase(u) end; readln end.
Объяснение кода листинга программы
- В начале кода определяются константы: ns — имя файла со сведениями о студентах, nu — имя файла для временного сохранения данных, nz — имя файла для хранения информации о неуспевающих студентах.
- Далее, объявляются переменные: s, u, z — текстовые переменные для работы с файлами; f, t, p — переменные для хранения информации из файла; o — массив для хранения оценок студентов; i, err — целочисленные переменные для работы с циклами и обработки ошибок; b, q — булевые переменные для контроля условий.
- Затем, происходит открытие файла ns на чтение и файла u на запись, а также файла z на запись.
- Переменная q инициализируется значением false, что означает отсутствие неуспевающих студентов.
- Далее, в цикле while с условием not eof(s) происходит чтение информации из файла ns.
- Внутри цикла, происходит разбиение строки t на отдельные слова: f — имя студента, p — оценки студентов.
- Для каждой оценки, происходит проверка на успешность сдачи сессии с помощью цикла for и условия b := b or (o[i] <= 2).
- Если условие успешности выполняется, то информация о студенте записывается в файл z, иначе — в файл u.
- После окончания цикла, происходит проверка значения переменной q.
- Если q равно true, то происходит вывод информации из файла z, переименование файла z в ns и удаление файлов s и u.
- В противном случае, выводится сообщение
Неуспевающих студентов нет
, файл z закрывается и удаляется, а файл u остается без изменений.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д