М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
anuar0403
anuar0403
15.06.2020 13:35 •  Информатика

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

👇
Ответ:
frazka228
frazka228
15.06.2020
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.
4,4(31 оценок)
Ответ:
ralibaev
ralibaev
15.06.2020
Почему бы не использовать условия 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.
4,7(26 оценок)
Открыть все ответы
Ответ:
colaboyy7704ox6ktx
colaboyy7704ox6ktx
15.06.2020
Чтобы прекратить ввод чисел в массив нужно ввести число "-1".
class ArrayMiddle{
 public static void main(String args[]){
  java.util.Scanner in = new java.util.Scanner(System.in); long eArray[] = new long[1];
  while((eArray[eArray.length-1] = in.nextLong())!=-1){
   long nArray[] = new long[eArray.length+1];
   for(int nCell = 0; nCell<eArray.length; nCell++)nArray[nCell]=eArray[nCell];
   eArray = nArray;
  } eArray[eArray.length-1] = 0;
  for(int cCell = 0; cCell<eArray.length-1; cCell++)eArray[eArray.length-1]+=eArray[cCell];
  System.out.print(eArray[eArray.length-1]/(double)(eArray.length-1));
 }
}
4,4(26 оценок)
Ответ:
gorod1723
gorod1723
15.06.2020
Собственно, решение однострочное...

// PascalABC.NET 3.0, сборка 1150 от 22.01.2016
begin
  Writeln('Ср.арифм=',ArrRandom(30,0,1000).Println(', ').
      Where(x->Odd(x)).Average)
end.

Тестовое решение:
611, 443, 634, 637, 44, 297, 286, 431, 130, 767, 388, 513, 827, 681, 619, 810, 586, 697, 206, 823, 294, 238, 354, 138, 411, 141, 873, 864, 715, 564
Ср.арифм=592.875

И пояснение, как это работает, т.е. по сути алгоритм на русском языке.
ArrRandom(30,0,1000) создает массив из 30 элементов и заполняет его случайными значениями из диапазона [0,1000]. Далее этот массив обрабатывается методом Println, который направляет значения элементов на вывод, разделяя их запятой с последующим пробелом и в конце вывода добавляет смену строки. Затем элементы массива проходят фильтр Where(x->Odd(x)), который пропускает через себя только те значения, которые удовлетворяют условию Odd(значение элемента)=True, а мы знаем, что Odd() возвращает True для нечетного аргумента. Далее фильтр элементы обрабатываются методом Average, который умеет принимать набор значений и возвращать их среднее. И наконец, процедура Writeln выводит полученное значение, предваряя его текстовым пояснением.
4,4(47 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ