Чем можно заменить оператор goto в турбо паскале. Существует программа нужно, чтобы при...

0 голосов
161 просмотров

Чем можно заменить оператор 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' и после того, как он введет нужную букву вывести соответствующую операцию


Информатика (10.8k баллов) | 161 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

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.

(150k баллов)
0

Хороший код, жаль, что я уже сделала задание другим способом, но ничего, главное это то, что буду знать, как делать на будущее.

0

Не могли бы вы, пожалуйста, сказать за что отвечает #10?

0

спасибо

0 голосов

Почему бы не использовать условия 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.

(7.2k баллов)
0

спсибо

0

Не за что)

0

Главная проблема в том, что мне надо, чтобы первый раз 'la-la-la' выбивались автоматически, а затем только в случае, если к нему будут обращаться. А при ошибке выбивало, что-то типа "Ошибка" и тогда пользователю разрешалось выбирать еще раз операцию, которою нужно выполнять (примерно это в этом коде раз и происходит с 'la-la-la' )

0

Так оно и должно выходить автоматически при первом запуске. А ошибка - вы имеете в виду ошибку в программе или неверно введённый символ?

0

Ну, например, это когда пользователь вводит букву P и тогда нужно нечто такого типа:

0

writeln('Error, please enter C,D,E or Q');

0

Ага, окей

0

Исправил, принимайте

0

вроде все работает, большое спасибо.

0

Не стоит, рад помочь))