Карандеев
5 год назад
Чем можно заменить оператор goto в турбо паскале. Существует программа нужно, чтобы при нажатии определенной буквы выполнялась определенный цикл, как это сделать не используя оператор безусловного перехода goto.
Приведите пример на следующем коде:
Program ABC;
Uses CRT;
var
a, b, x, y, w, z: Real;
C, D, E, Q: integer;
begin
begin {Q}
writeln ('la-la-la');
writeln ('Если хотите вычислить сумму, то нажмите С, произведение- D, операцию деления -E ');
readln;
ClrScr;
end;
begin {c}
readln(a, b);
writeln (a+b);
readln;
ClrScr;
end;
begin {D}
readln(x, y);
writeln (x*y);
readln;
ClrScr;
end;
begin {E}
readln(w, z);
writeln (w/z);
readln;
ClrScr;
end;
end.
Если пользователь нажимает букву Q нужно вернуть его к операции:
" begin {Q}
writeln ('la-la-la');
writeln ('Если хотите вычислить сумму, то нажмите С, произведение- D, операцию деления -E ');
end;"
В случае, если пользователь вводит любую другую букву нужно сказать, что 'Error, please enter C, E or D' и после того, как он введет нужную букву вывести соответствующую операцию
ОТВЕТЫ
Андронович
Aug 8, 2019
Program ABC;
Uses CRT;
var
a,b:real;
c:char;
begin
ClrScr;
repeat
Writeln(la-la-la);
Write(Если хотите вычислить сумму, то нажмите С,);
Writeln( произведение- D, операцию деления -E );
Writeln(Для завершения работы нажмите Q);
c:=ReadKey;
case c of
C,c:begin
Write(Сложение: введите слагаемые: ); Read(a,b);
Writeln(Сумма равна ,a+b);
Write(Для продолжения нажмите любую клавишу);
ReadKey;
ClrScr
end;
D,d:begin
Write(Умножение: введите сомножители: ); Read(a,b);
Writeln(Произведение равно ,a*b);
Write(Для продолжения нажмите любую клавишу);
ReadKey;
ClrScr
end;
E,e:begin
Write(Деление: введите делимое и делитель: ); Read(a,b);
Writeln(Частное равно ,a/b);
Write(Для продолжения нажмите любую клавишу);
ReadKey;
ClrScr
end;
Q,q:;
else begin
Writeln(#13#10,Error, please enter C, E or D,#13#10);
end
end;
until c in [Q,q];
Writeln(Ждем Вас снова!);
Readkey
end.
Uses CRT;
var
a,b:real;
c:char;
begin
ClrScr;
repeat
Writeln(la-la-la);
Write(Если хотите вычислить сумму, то нажмите С,);
Writeln( произведение- D, операцию деления -E );
Writeln(Для завершения работы нажмите Q);
c:=ReadKey;
case c of
C,c:begin
Write(Сложение: введите слагаемые: ); Read(a,b);
Writeln(Сумма равна ,a+b);
Write(Для продолжения нажмите любую клавишу);
ReadKey;
ClrScr
end;
D,d:begin
Write(Умножение: введите сомножители: ); Read(a,b);
Writeln(Произведение равно ,a*b);
Write(Для продолжения нажмите любую клавишу);
ReadKey;
ClrScr
end;
E,e:begin
Write(Деление: введите делимое и делитель: ); Read(a,b);
Writeln(Частное равно ,a/b);
Write(Для продолжения нажмите любую клавишу);
ReadKey;
ClrScr
end;
Q,q:;
else begin
Writeln(#13#10,Error, please enter C, E or D,#13#10);
end
end;
until c in [Q,q];
Writeln(Ждем Вас снова!);
Readkey
end.
Почему бы не использовать условия if для выбора нужного цикла по введённой букве
Program ABC;
Uses CRT;
var
a, b, x, y, w, z: Real;
C, D, E, Q: integer;
action: char;
begin
action := x;
while not (action = Q) do
begin
writeln (la-la-la);
writeln (Если хотите вычислить сумму, то нажмите С, произведение- D, операцию деления -E );
readln(action);
ClrScr;
if action = C then
begin
readln(a, b);
writeln (a+b);
readln(action);
ClrScr;
end;
if action = D then
begin
readln(x, y);
writeln (x*y);
readln(action);
ClrScr;
end;
if action = E then
begin
readln(w, z);
writeln (w/z);
readln(action);
ClrScr;
end;
if not ( (action = C) or (action = D) or (action = E) or (action = Q) ) then
begin
writeln(Ошибка, введите C, D, E или Q);
readln(action);
ClrScr;
end;
end;
end.
Program ABC;
Uses CRT;
var
a, b, x, y, w, z: Real;
C, D, E, Q: integer;
action: char;
begin
action := x;
while not (action = Q) do
begin
writeln (la-la-la);
writeln (Если хотите вычислить сумму, то нажмите С, произведение- D, операцию деления -E );
readln(action);
ClrScr;
if action = C then
begin
readln(a, b);
writeln (a+b);
readln(action);
ClrScr;
end;
if action = D then
begin
readln(x, y);
writeln (x*y);
readln(action);
ClrScr;
end;
if action = E then
begin
readln(w, z);
writeln (w/z);
readln(action);
ClrScr;
end;
if not ( (action = C) or (action = D) or (action = E) or (action = Q) ) then
begin
writeln(Ошибка, введите C, D, E или Q);
readln(action);
ClrScr;
end;
end;
end.
172
Смежные вопросы: