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