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