Ошибка 121: ошибочный спецификатор - Pascal
Формулировка задачи:
Всем доброго времени суток! Не могу понять, в чем проблема - не получается обратиться к подтипу.
Задача такова: олимпиада, в ней не менее 1000 и не более 2000 человек приняли участие, о каждом есть информация в формате: фамилия(surname), инициалы(name) и номер школы(num). Все параметры обязательны, именно поэтому приходится использовать type. Необходимо выявить номер школы, из которой участие в олимпиаде приняло наибольшее число учеников.
Моё понимание решения: делаю тип student, делаю массив data, состоящий из student, создаю массив school с номерами школ и , считывая номера школ учеников из data, к соответствующему элементу school прибавляю 1. В итоге просто сравниваю элементы в school. Но что-то идет не так... Паскаль вызверяется на точку после data.
uses crt;
type student = record
surname:string[20];
name:string[4];
num: 10..99;
end;
var n,i,k,max,maxi: integer; data: array[1..2000] of student;
school:array[10..99] of integer;
begin
clrscr;
for i:=10 to 99 do school[i]:=0;
writeln('ввод числа участников');
readln(n)
for i:=1 to n do
begin
readln(data.surname);
readln(data.name);
readln(data.num);
school[data.num]:=school[data.num]+1;
end;
max:=school[10];
maxi:=10;
for i:=11 to 99 do
begin
if school[i]>max then begin max:=school[i]; maxi:=i; end;
end;
writeln('максимум участников из школы номер ',maxi);
readkey;
end.Решение задачи: «Ошибка 121: ошибочный спецификатор»
textual
Листинг программы
var
a: array [10..99] of Integer;
i, s, n: Integer;
begin
for i:=Low(a) to High(a) do a[i]:=0;
Write('Количество учеников: '); ReadLn(n);
for i:=1 to n do begin
repeat
Write(i:4,' Фамилия, инициалы: '); ReadLn;
Write('':5,'Номер школы (',Low(a),'..',High(a),'): '); ReadLn(s);
until s in [Low(a)..High(a)];
Inc(a[s]);
end;
s:=Low(a); for i:=Low(a)+1 to High(a) do if a[i]>a[s] then s:=i;
WriteLn('Максимум участников из школы номер ', s);
Write('Нажмите Enter...'); ReadLn;
end.
Объяснение кода листинга программы
- Объявлены переменные: a: массив целых чисел размером от 10 до 99; i, s, n: целочисленные переменные.
- Цикл заполняет массив a нулями.
- Пользователю предлагается ввести количество учеников (n).
- В цикле запрашивается фамилия и инициалы ученика (4 символа), номер школы (5 символов), и этот номер проверяется в диапазоне от Low(a) до High(a).
- Если номер школы корректен, то к элементу a[s] прибавляется единица.
- Цикл продолжается, пока не будет введено нужное количество учеников.
- Затем находится школа с максимальным количеством учеников (переменная s).
- Выводится сообщение с номером школы, в которой учится больше всего учеников.
- Запрошается Enter для выхода из программы.