Ошибка 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.

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

  1. Объявлены переменные: a: массив целых чисел размером от 10 до 99; i, s, n: целочисленные переменные.
  2. Цикл заполняет массив a нулями.
  3. Пользователю предлагается ввести количество учеников (n).
  4. В цикле запрашивается фамилия и инициалы ученика (4 символа), номер школы (5 символов), и этот номер проверяется в диапазоне от Low(a) до High(a).
  5. Если номер школы корректен, то к элементу a[s] прибавляется единица.
  6. Цикл продолжается, пока не будет введено нужное количество учеников.
  7. Затем находится школа с максимальным количеством учеников (переменная s).
  8. Выводится сообщение с номером школы, в которой учится больше всего учеников.
  9. Запрошается Enter для выхода из программы.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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