Error in statement - Turbo Pascal (29222)
Формулировка задачи:
Помогите, пожалуйста, не понимаю, что делаю неправильно
Выдает ошибку Error in Statement в Until и если ставлю Else
Вот задание:
Решение задачи: «Error in statement»
textual
Листинг программы
uses crt;
var a,y,q,w: integer;
z: extended;
ans:char;
begin
repeat
clrscr;
writeln('Введите a,y');
readln(a,y);
q:=a-y;
w:=a+y;
if(q<0)or(w<0)or(q=w)or((q+w)*(q-w)<0)then writeln('Z не определено')
else
begin
z:=sqrt((sqrt(q)+sqrt(w))/(sqrt(q)-sqrt(w)));
writeln('Z=',z:0:3);
end;
writeln('Повторить ? (Y/y-да другое нет)');
readln(ans);
until upcase(ans)<>'Y';
end.
Объяснение кода листинга программы
- В первой строке используется библиотека crt, которая является стандартной для Turbo Pascal.
- Переменные a, y, q и w объявлены как целочисленные.
- Переменная z объявлена как переменная с плавающей запятой.
- Переменная ans объявлена как символ.
- В цикле repeat-until выполняется следующий код:
- clrscr очищает экран.
- writeln('Введите a,y') выводит сообщение для пользователя.
- readln(a, y) считывает два целых числа от пользователя.
- q := a - y вычисляет разность между a и y и сохраняет результат в переменной q.
- w := a + y вычисляет сумму между a и y и сохраняет результат в переменной w.
- if (q < 0) or (w < 0) or (q == w) or ((q + w) * (q - w) < 0) then выводится сообщение 'Z не определено'.
- else выполняется следующая часть кода:
- z := sqrt((sqrt(q) + sqrt(w)) / (sqrt(q) - sqrt(w)));
- writeln('Z=', z:0:3);
- end;
- writeln('Повторить ? (Y/y-да другое нет)');
- readln(ans) считывает ответ пользователя.
- until upcase(ans) <> 'Y';
- end.