Вопрос задан 31.07.2023 в 07:23. Предмет Информатика. Спрашивает Бишенов Алдияр.

Почему не работает калькулятор(ничего не работает кроме деления на 0)? Прошу помогите пажалуйста

program calc; var operation: char; s, a, b: real; begin writeln('Введите первое число'); readln(a); writeln('выбирайте знак(+ - * /)'); readln(operation); writeln('Введите второе число'); readln(b); //read(operation); //if b=0 then if operation='/' then if (b=0) and (operation = '/') then begin writeln ('ERROR'); exit; end; readln(b); case operation of '+': s:=a+b; '-': s:=a-b; '*': s:=a*b; '/': s:=a/b; end; end.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Simonkhyk Leonid.
Program calc;
var
  operation:char;
  s,a,b:real;
begin
  writeln('Введите первое число'); readln(a);
  writeln('выбирайте знак(+ - * /)'); readln(operation);
  writeln('Введите второе число'); readln(b);
  if (b=0) and (operation = '/') then begin
    writeln ('ERROR');
    exit
  end;
  case operation of
  '+': s:=a+b;
  '-': s:=a-b;
  '*': s:=a*b;
  '/': s:=a/b;
  end;
  Writeln('Результат: ',s)
end.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Проблема вашего калькулятора заключается в том, что вы используете несколько раз команду readln(b);. Это приводит к тому, что пользователю будет предложено ввести второе число дважды, и значение b будет перезаписано вторым введенным числом, игнорируя проверку на деление на ноль.

Для решения проблемы вам необходимо убрать второй вызов readln(b);, также можно упростить проверку деления на ноль. Вот исправленный вариант кода:

pascal
program calc; var operation: char; s, a, b: real; begin writeln('Введите первое число'); readln(a); writeln('Выберите знак (+ - * /)'); readln(operation); writeln('Введите второе число'); readln(b); case operation of '+': s := a + b; '-': s := a - b; '*': s := a * b; '/': begin if b = 0 then begin writeln('ERROR: Деление на ноль недопустимо'); exit; end; s := a / b; end; else begin writeln('ERROR: Некорректный знак операции'); exit; end; end; writeln('Результат: ', s); end.

Теперь ваш калькулятор должен работать корректно и обрабатывать деление на ноль.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос