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

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

Задать свой вопрос
2 ответа
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(1310,'Error, please enter C, E or D',1310);
      end
    end;
  until c in ['Q','q'];
  Writeln('Ждем Вас опять!');
  Readkey
end.
Леха Грудолимов
Превосходный код, жалко, что я теснее сделала задание иным методом, но ничего, основное это то, что буду знать, как делать на будущее.
Валентина
Не могли бы вы, пожалуйста, сказать за что отвечает 10?
Круинов Пашок
спасибо
Почему бы не использовать условия 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.
Арина Пушакова
спсибо
Вадим
Не за что)
Димка Местропян
Основная неувязка в том, что мне надобно, чтоб 1-ый раз 'la-la-la' выбивались автоматом, а потом только в случае, если к нему будут обращаться. А при ошибке выбивало, что-то типа "Ошибка" и тогда юзеру разрешалось выбирать еще раз операцию, которою необходимо выполнять (приблизительно это в этом коде раз и происходит с 'la-la-la' )
Евген
Так оно и обязано выходить автоматом при первом запуске. А ошибка - вы имеете в виду ошибку в программе или ошибочно введённый знак?
Илья Белаустеги
Ну, к примеру, это когда пользователь вводит буковку P и тогда необходимо нечто такового типа:
Лариса
writeln('Error, please enter C,D,E or Q');
Василиса
Ага, окей
Квардашова Тамара
Поправил, принимайте
Максимка Долгорукий
вроде все работает, огромное спасибо.
Шкулепов Артемий
Не стоит, рад посодействовать))
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт