Написала программу! выдает ошибку. помогите, пожалуйста!
Program Labor5d;
{ Этап 3 с использованием аппарата приведения типов }
Uses Crt,Printer;
Const
NmaxX = 100; { макс. количество эл-тов в массиве Х }
NmaxY = 200; { макс. количество эл-тов в массиве Y }
NmaxZ = 300; { макс. количество эл-тов в массиве Z }
Enter = 13; { код клавиши Enter }
Escape = 27; { код клавиши Esc }
PressKey = 'Нажмите клавишу Enter';
Type
Xar = array[1..NmaxX] of real;
Yar = array[1..NmaxY] of real;
Zar = array[1..NmaxZ] of real;
Var
nx,ny,nz : integer; { кол-во эл-тов в массивах X,Y,Z }
IndPrinter { индикатор использования принтера }
: boolean;
Reply : char; { символ ответа на запрос программы }
X : Xar; { исходный массив X }
Y : Yar; { исходный массив Y }
Z : Zar; { исходный массив Z }
FileX,FileY, { исходные файлы }
FileZ : text;
{ ---------------------------------------------------------}
Procedure WaitEnter;
Procedure PrintString(x,y:integer; S:string);
Procedure PrintKeyAndWaitEnter;
Procedure ControlPageScreen(Var j,KeyExit:byte);
{ ---------------------------------------------------------}
Procedure ReadArray(Var FileArray:text; Var A:XYZAr; Var n:integer);
{ Ввод исходного массива }
Type RealAr = array[1..2*MaxInt div (SizeOf(real))] of real;
Var i : integer;
Begin
Reset(FileArray);
n:=0;
While not SeekEof(FileArray) do
Begin
Inc(n);
Read(FileArray,RealAr(A)[n]);
End;
Close(FileArray);
End { ReadArray };
{ ---------------------------------------------------------}
Procedure ScreenArray(Var A:XYZAr; n:integer; S:string);
{ Вывод исходного массива на экран }
Type RealAr = array[1..2*MaxInt div (SizeOf(real))] of real;
Var i : integer;
j,k,KeyExit : byte;
Begin
ClrScr; j:=0; k:=0;
Writeln(S);
For i:=1 to n do
Begin
Inc(k);
If k<5 then
Write(RealAr(A):8:2,' ':4)
Else
Begin
k:=0; Inc(j);
Writeln(RealAr(A):8:2);
ControlPageScreen(j,KeyExit);
If KeyExit=Escape then Exit;
End;
End;
If k>0 then Writeln;
PrintKeyAndWaitEnter;
End { ScreenArray };
{ ---------------------------------------------------------}
Procedure PrinterArray(Var A:XYZAr; n:integer; S:string);
{ Печать исходного массива на принтере }
Type RealAr = array[1..2*MaxInt div (SizeOf(real))] of real;
Var i : integer;
k : byte;
Begin
k:=0;
Writeln(Lst); Writeln(Lst,S);
For i:=1 to n do
Begin
Inc(k);
If k<5 then
Write(Lst,RealAr(A):8:2,' ':4)
Else
Begin
k:=0;
Writeln(Lst,RealAr(A):8:2);
End;
End;
If k>0 then Writeln(Lst);
End { PrinterArray };
{ ---------------------------------------------------------}
Procedure Exchange(Var A:XYZAr; n:integer);
{ Обмен положительных и отрицательных элементов в массиве }
Type RealAr = array[1..2*MaxInt div (SizeOf(real))] of real;
BufAr = array[1..1000] of real;
Var
i, { параметр цикла }
k1, { индекс начала поиска положит. эл-та }
k2, { то же для отрицательного элемента }
IndexPos, { позиция положительного элемента }
IndexNeg, { позиция отрицательного элемента }
NumberPos, { количество положительных элементов }
NumberNeg, { количество отрицательных элементов }
NumberExchange { количество обменов элементов }
: integer;
Buf : real; { буферная переменная }
Buffer : BufAr; { буферный массив }
{ ----------------------------------------}
Procedure SearchIndex;
{ Поиск положительного и отрицательного элементов }
Label 10;
Var i : integer;
Begin
IndexPos:=0; IndexNeg:=0;
For i:=k1 to n do
If RealAr(A)>0 then
Begin
IndexPos:=i; Goto 10
End;
10:
If IndexPos>0 then
For i:=k2 dow