Индекс находился вне границ масива
помогите исправить программу вот задание
1. Описать запись с именем WORKER, содержащую следующие поля:
фамилия и инициалы работника;
название занимаемой должности;
год поступления на работу.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив, состоящий из десяти записей типа WORKER;
вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры; если таких работников нет, вывести на дисплей соответствующее сообщение.
вот код
program prim;
uses crt;
type
WORKER=record
FIO:string [50];
title:string [50] ;
God:integer;
end;
var
WorkerArray:Array [1..100] of WORKER;
otv:0..3;
kol,i:0..100;
vvod_:0..1;
Procedure vvod;
begin
i:=0;
Writeln ('Формирование массива ');
Writeln ('____________________________________________');
repeat
i:=i+1;
clrscr;
Writeln ('Введите данные-',i,' -о работниках');
Write (' ФИО ? ');
Readln (WorkerArray.FIO);
Write (' название занимаемой должности; ? ');
Readln (WorkerArray.title);
Write (' год поступления на работу. ? ');
Readln (WorkerArray.God);
Writeln ('_________________________________');
Writeln ('Исчерпан список ввода-0 нет-1');
Readln (otv);
Until otv=0;
kol:=i; vvod_:=1;
end;
Procedure vivod;
var
otv:1..3;
fio:String [30];
c,title:real;
god,k,i:integer;
vivod_:0..1;
mas: array[1..200] of WORKER ;
begin
clrscr; vivod_:=0;
Writeln ('Введите данные для вывода информации');
Writeln ('------------------');
Write ('ФИО ');
Readln (mas.fio);
Write ('Введите сегодняшний год');
Readln (mas.god);
for i:=1 to kol do
if WorkerArray.FIO<>mas.fio then
Writeln ('Пользователь не найден')
else begin
if WorkerArray.FIO=mas.fio then
c:=mas.God-WorkerArray.God;
end;
begin
Writeln ('---------------------------------------');
writeln(WorkerArray.FIO,c);
k:=i+1;
end;
if k=0 then
begin
clrscr;
writeln('Стаж всех работников меньше заданого.');
end;
readln;
end;
begin
vvod_:=0;
repeat
clrscr;
Writeln ('Введите Вариант работы с программой');
Writeln ('--------------------------');
Writeln ('Формирование массива сведений о работниках -1');
Writeln ('Поиск и вывод информации -2');
Writeln ('Закончить работу с программой -3');
Writeln ('---------------------------------------');
readln (otv);
case otv of
1:vvod;
2: if vvod_=0 then begin Vvod; vivod;end else vivod;
3:exit;
end;
until false;
end.
помогите исправить программу вот задание
1. Описать запись с именем WORKER, содержащую следующие поля:
фамилия и инициалы работника;
название занимаемой должности;
год поступления на работу.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив, состоящий из десяти записей типа WORKER;
вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры; если таких работников нет, вывести на дисплей соответствующее сообщение.
вот код
program prim;
uses crt;
type
WORKER=record
FIO:string [50];
title:string [50] ;
God:integer;
end;
var
WorkerArray:Array [1..100] of WORKER;
otv:0..3;
kol,i:0..100;
vvod_:0..1;
Procedure vvod;
begin
i:=0;
Writeln ('Формирование массива ');
Writeln ('____________________________________________');
repeat
i:=i+1;
clrscr;
Writeln ('Введите данные-',i,' -о работниках');
Write (' ФИО ? ');
Readln (WorkerArray.FIO);
Write (' название занимаемой должности; ? ');
Readln (WorkerArray.title);
Write (' год поступления на работу. ? ');
Readln (WorkerArray.God);
Writeln ('_________________________________');
Writeln ('Исчерпан список ввода-0 нет-1');
Readln (otv);
Until otv=0;
kol:=i; vvod_:=1;
end;
Procedure vivod;
var
otv:1..3;
fio:String [30];
c,title:real;
god,k,i:integer;
vivod_:0..1;
mas: array[1..200] of WORKER ;
begin
clrscr; vivod_:=0;
Writeln ('Введите данные для вывода информации');
Writeln ('------------------');
Write ('ФИО ');
Readln (mas.fio);
Write ('Введите сегодняшний год');
Readln (mas.god);
for i:=1 to kol do
if WorkerArray.FIO<>mas.fio then
Writeln ('Пользователь не найден')
else begin
if WorkerArray.FIO=mas.fio then
c:=mas.God-WorkerArray.God;
end;
begin
Writeln ('---------------------------------------');
writeln(WorkerArray.FIO,c);
k:=i+1;
end;
if k=0 then
begin
clrscr;
writeln('Стаж всех работников меньше заданого.');
end;
readln;
end;
begin
vvod_:=0;
repeat
clrscr;
Writeln ('Введите Вариант работы с программой');
Writeln ('--------------------------');
Writeln ('Формирование массива сведений о работниках -1');
Writeln ('Поиск и вывод информации -2');
Writeln ('Закончить работу с программой -3');
Writeln ('---------------------------------------');
readln (otv);
case otv of
1:vvod;
2: if vvod_=0 then begin Vvod; vivod;end else vivod;
3:exit;
end;
until false;
end.