Как исправить?
Код программы:
Uses CRT; {Раздел объявления внешних модулей}
Label M1,M2;
Var
n: integer;
x,y,b: real;
p: byte; {Признак выполнения пункта N1}
Begin
ClrScr; { Очистка экрана }
WriteLn('Программа вычисления функции...');
{Вывод на экран меню}
writeln('+--------------------------------------------+');
writeln('| 1. Ввод данных |');
writeln('| 2. Вычисление функции и вывод результатов |');
writeln('| 3. Завершение работы программы |');
writeln('+--------------------------------------------+');
p:=0;
M1: WriteLn('введите пункт меню');
readln(n); {Ввод номера пункта меню}
case n of
1:
Begin {Ввод данных}
M2: Write('Введите значение аргумента x=');
readln(x);
{Проверка допустимого значения аргумента}
if x = 8 then
begin
WriteLn('x не может быть равным 0 по условию');
goto M2;
End;
p:=1; {Пункт N1 выполнен}
end;
2: {Вычисление значения функции}
Begin
If p = 0 then
WriteLn('Данные не введены, выполните пункт N1')
else
begin
{Операторы вычисления и вывода значения функции}
y := sqr(x) + 4*x - 8;
if x > 2 then
y := 1/y;
writeln('при х=', x:7:2, ' y=', y:7:2)
end;
end;
3: Exit {Выход из программы}
end; {end case}
goto M1;
end. {Конец программы}