
Вопрос задан 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.

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

Отвечает 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.
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.



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Проблема вашего калькулятора заключается в том, что вы используете несколько раз команду readln(b);
. Это приводит к тому, что пользователю будет предложено ввести второе число дважды, и значение b
будет перезаписано вторым введенным числом, игнорируя проверку на деление на ноль.
Для решения проблемы вам необходимо убрать второй вызов readln(b);
, также можно упростить проверку деления на ноль. Вот исправленный вариант кода:
pascalprogram 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.
Теперь ваш калькулятор должен работать корректно и обрабатывать деление на ноль.


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

Информатика 565

Информатика 25

Информатика 22

Информатика 27

Информатика 34

Информатика 58

Информатика 63

Информатика 23
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili