Оставить в файле сведения только о тех студентах, которые успешно сдали сессию - 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.

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

  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
Похожие ответы