Оставить в файле сведения только о тех студентах, которые успешно сдали сессию - Free Pascal

Узнай цену своей работы

Формулировка задачи:

5)Имеется файл содержащий сведения о студентах: Фамилия, оценки по трём предметам, номер группы. Оставить в файле сведения только о тех студентах, которые успешно сдали сессию и вывести на печать всех задолжников.

Решение задачи: «Оставить в файле сведения только о тех студентах, которые успешно сдали сессию»

textual
Листинг программы
  1. const ns = 'student.txt';
  2.       nu = 'temp.tmp';
  3.       nz = 'zadolzn.txt';
  4.  
  5. var s, u, z: text;
  6.     f, t, p: string;
  7.     o: array [1..3] of integer;
  8.     i, err: integer;
  9.     b, q: boolean;
  10.  
  11. begin
  12.   assign(s, ns);
  13.   reset(s);
  14.   assign(u, nu);
  15.   rewrite(u);
  16.   assign(z, nz);
  17.   rewrite(z);
  18.   q := false;
  19.   while not eof(s) do
  20.     begin
  21.       readln(s, t);
  22.       p := t;
  23.       f := copy(t, 1, pos(' ', t));
  24.       delete(t, 1, pos(' ', t));
  25.       b := false;
  26.       for i := 1 to 3 do
  27.         begin
  28.           val(copy(t, 1, pos(' ', t) - 1), o[i] , err);
  29.           delete(t, 1, pos(' ', t));
  30.           b := b or (o[i] <= 2)
  31.         end;
  32.       q := q or b;
  33.       if b
  34.         then writeln(z, p)
  35.         else writeln(u, p)
  36.     end;
  37.   close(s);
  38.   close(u);
  39.   if q
  40.     then begin
  41.       writeln('Неуспевающие студенты:');
  42.       reset(z);
  43.       while not eof(z) do
  44.         begin
  45.           readln(z, t);
  46.           writeln(t);
  47.         end;
  48.       close(z);
  49.       erase(s);
  50.       rename(u, ns)
  51.     end
  52.     else begin
  53.       writeln('Неуспевающих студентов нет');
  54.       close(z);
  55.       erase(z);
  56.       erase(u)
  57.     end;
  58.   readln
  59. end.

Объяснение кода листинга программы

  1. В начале кода определяются константы: ns — имя файла со сведениями о студентах, nu — имя файла для временного сохранения данных, nz — имя файла для хранения информации о неуспевающих студентах.
  2. Далее, объявляются переменные: s, u, z — текстовые переменные для работы с файлами; f, t, p — переменные для хранения информации из файла; o — массив для хранения оценок студентов; i, err — целочисленные переменные для работы с циклами и обработки ошибок; b, q — булевые переменные для контроля условий.
  3. Затем, происходит открытие файла ns на чтение и файла u на запись, а также файла z на запись.
  4. Переменная q инициализируется значением false, что означает отсутствие неуспевающих студентов.
  5. Далее, в цикле while с условием not eof(s) происходит чтение информации из файла ns.
  6. Внутри цикла, происходит разбиение строки t на отдельные слова: f — имя студента, p — оценки студентов.
  7. Для каждой оценки, происходит проверка на успешность сдачи сессии с помощью цикла for и условия b := b or (o[i] <= 2).
  8. Если условие успешности выполняется, то информация о студенте записывается в файл z, иначе — в файл u.
  9. После окончания цикла, происходит проверка значения переменной q.
  10. Если q равно true, то происходит вывод информации из файла z, переименование файла z в ns и удаление файлов s и u.
  11. В противном случае, выводится сообщение Неуспевающих студентов нет, файл z закрывается и удаляется, а файл u остается без изменений.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы