PABCSystem.pas(4099) : Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта - Pascal ABC

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

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

Написал программу к заданию Распечатать фамилии тех учеников, которые не получили ни одной тройки за последнюю четверть. В каких классах учатся эти ученики? Каков их средний балл? Вот сама программа
Проблема в том , что при выполнении выдает PABCSystem.pas(4099) : Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта. Подскажите в чем проблема

Решение задачи: «PABCSystem.pas(4099) : Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта»

textual
Листинг программы
program lab7z8;
type
     stud = record
     fam:string[20];
     fizika:integer;
     matematika:integer;
     biologiya:integer;
     informatika:integer;
     klas:string;
end;
var
  f:text;
  mas:array[1..20] of stud;
  i,n:integer;
  sr:real;
begin
assign(f,'f.txt');
rewrite(f);
writeln('Заполните базу данных:');
write('Колличество учеников ');
readln(n);
for i:=1 to n do
 begin
  write('Фамилия ');
  readln(mas[i].fam);
  write('Класс ');
  readln(mas[i].klas);
  write('Оценка по математике ');
  readln(mas[i].matematika);
  write('Оценка по физике ');
  readln(mas[i].fizika);
  write('Оценка по биологии ');
  readln(mas[i].biologiya);
  write('Оценка по информатике ');
  readln(mas[i].informatika);
 end;
writeln;
writeln('не получили ни одной тройки за последнюю четверть:');
for i :=1 to n do
 begin
  if (mas[i].matematika>3) and (mas[i].fizika>3)
  and (mas[i].biologiya>3) and (mas[i].informatika>3) then
   begin
    sr:=(mas[i].matematika+mas[i].fizika+ mas[i].biologiya+mas[i].informatika)/4;
    writeln(' Фамилия  ',mas[i].fam);
    write(f,' Фамилия  ',mas[i].fam);
    writeln(' Класс  ',mas[i].klas);
    write(f,' Класс  ',mas[i].klas);
    writeln(' Средний балл  ',sr:2:2);
    writeln(f,' Средний балл  ',sr:2:2);
    writeln;
   end;
  end;
close(f);
end.

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

  1. Создается программа lab7z8 на языке Pascal ABC.
  2. Определяется тип данных stud, который представляет запись с полями fam (строка), fizika (целое число), matematika (целое число), biologiya (целое число), informatika (целое число), klas (строка).
  3. Определяется переменная f типа text, которая представляет файл для записи.
  4. Определяется массив mas типа array[1..20] of stud, который представляет 20 записей типа stud.
  5. Определяются переменные i и n типа integer, которые представляют индексы для цикла и количество учеников соответственно.
  6. Определяется переменная sr типа real, которая представляет средний балл.
  7. Выполняется операция присвоения значений переменным: f присваивается значение f.txt, mas заполняется данными о студентах, i и n устанавливаются в начальные значения.
  8. Запускается цикл for для каждого ученика:
    • Выводится сообщение Колличество учеников.
    • Пользователю предлагается ввести количество учеников.
    • Для каждого ученика:
      • Выводится сообщение Фамилия.
      • Пользователю предлагается ввести фамилию ученика.
      • Выводится сообщение Класс.
      • Пользователю предлагается ввести класс ученика.
      • Выводится сообщение Оценка по математике.
      • Пользователю предлагается ввести оценку по математике.
      • Выводится сообщение Оценка по физике.
      • Пользователю предлагается ввести оценку по физике.
      • Выводится сообщение Оценка по биологии.
      • Пользователю предлагается ввести оценку по биологии.
      • Выводится сообщение Оценка по информатике.
      • Пользователю предлагается ввести оценку по информатике.
      • Если все оценки больше 3, вычисляется средний балл и выводится сообщение с фамилией, классом, средним баллом и оценками по каждому предмету.
  9. После окончания цикла выводится сообщение не получили ни одной тройки за последнюю четверть.
  10. Закрывается файл f.

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

13   голосов , оценка 4.385 из 5
Похожие ответы