Error in statement - Turbo Pascal (29222)
Формулировка задачи:
Помогите, пожалуйста, не понимаю, что делаю неправильно
Выдает ошибку Error in Statement в Until и если ставлю Else
Вот задание:
Листинг программы
- USES CRT;
- VAR
- a, y: integer; {parameters set by the user}
- s: extended; {parameter set by the computer}
- ans: char;
- q, w: double;
- Begin
- Repeat
- ClrScr;
- WriteLn(' Calculate programe #3');
- WriteLn(' /в”Ђв”Ђв”Ђв”Ђв”Ђв”Ђв”Ђв”Ђв”Ђв”Ђв”ђ');
- WriteLn(' /в”Ђв”Ђв”Ђв”ђ в”Ђв”Ђв”Ђв”ђ ');
- WriteLn(' /в€љa-y + в€љa+y ');
- WriteLn(' /в”Ђв”Ђв”Ђв”Ђв”Ђв”Ђв”Ђв”Ђв”Ђв”Ђв”Ђв”Ђв”Ђ ');
- WriteLn(' _ / в”Ђв”Ђв”Ђв”ђ в”Ђв”Ђв”Ђв”Ђв”ђ ');
- WriteLn(' в€љ в€љa-y - в€љ a+y ');
- Write('Set the "a" = '); ReadLn(a);
- Write('Set the "y" = '); ReadLn(y);
- IF a<>0 Then
- begin
- If (a>0) and (y>0) Then
- begin
- If a>y Then
- q:=sqrt(a-y); ReadLn(q);
- w:=sqrt(a+y); ReadLn(w);
- s:=sqrt((q+w)/(q-w)); WriteLn('s= ', s:6:2);
- end;
- If (a>0) and (y<0) Then
- begin
- If a<y Then
- q:=sqrt(a-y); ReadLn(q);
- w:=sqrt(a+y); ReadLn(w);
- s:=sqrt((q+w)/(q-w)); WriteLn('s= ', s:6:2);
- end;
- If (a>0) and (y=0) Then
- begin
- q:=sqrt(a-y); ReadLn(q);
- w:=sqrt(a+y); ReadLn(w);
- s:=sqrt((q+w)/(q-w)); WriteLn('s= ', s:6:2);
- end;
- end;
- WriteLn('Return to the start? (Y/N)'); ReadLn(ans);
- Until (ans='N') or (ans='n');
- ReadLn;
- END.
Решение задачи: «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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д