Написать программу, которая будет складывать, вычитать, умножать или делить два числа. Числа и знак операции вводятся пользователем. После выполнения вычисления программа не должна завершаться, а должна запрашивать новые данные для вычислений. Завершение программы должно выполняться при вводе символа ‘0’ в качестве знака операции. Если пользователь вводит неверный знак (не ‘0’, ‘+’, ‘-‘, ‘*’, ‘/’), то программа должна сообщать ему об ошибке и снова запрашивать знак операции. Также сообщать пользователю о невозможности деления на ноль, если он ввел 0 в качестве делителя.
Запустить бесконечный цикл.
Запросить ввод знака операции.
Если был введен ‘0’, то прервать цикл операцией break.
Если был введен один из знаков арифметических операций, то в зависимости от того, какой знак был введен, выполнить соответствующее ему арифметическое действие. При этом при делении проверить не был ли введен ноль. Если это так, то вывести сообщение, иначе выполнить деление.
Иначе сообщить о неверно введенном знаке.
Pascal
простой калькулятор на паскаль
var
x,y,z: real;
sign: char;
begin
while True do begin
write('sign: '); readln(sign);
if sign = '0' then break;
if sign in ['+','-','*','/'] then begin
write('x='); readln(x);
write('y='); readln(y);
case sign of
'+': begin z := x + y; writeln(z:5:2) end;
'-': begin z := x - y; writeln(z:5:2); end;
'*': begin z := x * y; writeln(z:5:2); end;
'/': if y <> 0 then begin
z := x / y;
writeln(z:5:2)
end
else
writeln('Division by zero!');
end;
end
else writeln('Bad sign!')
end;
end.
sign: 8
Bad sign!
sign: 4
Bad sign!
sign: -
x=5
y=6
-1.00
sign: +
x=4.45
y=10.66
15.11
sign: *
x=-3.4
y=-67
227.80
sign: /
x=-78
y=123
-0.63
sign: /
x=9
y=0
Division by zero!
sign: i
Bad sign!
sign: 0
Язык Си
#include
main() {
float x,y;
char sign='+';
while (sign != '0') {
printf("Знак: ");
scanf("%c%*c", &sign);
if (sign == '0') { break; }
if (sign == '+' || sign == '-' || sign == '*' || sign == '/') {
printf("x=");
scanf("%f%*c", &x);
printf("y=");
scanf("%f%*c", &y);
switch (sign) {
case '+':
printf("%.2f\n", x+y);
break;
case '-':
printf("%.2f\n", x-y);
break;
case '*':
printf("%.2f\n", x*y);
break;
case '/':
if (y != 0) printf("%.2f\n", x/y);
else printf("Деление на ноль!\n");
}
}
else printf("Неверно указан знак операции\n");
}
}
Знак: 7
Неверно указан знак операции
Знак: 3
Неверно указан знак операции
Знак: +
x=4
y=5
9.00
Знак: /
x=0
y=0
Деление на ноль!
Знак: -
x=-34.4
y=-2
-32.40
Знак: 0
При вводе данных необходимо избавиться от символа перехода на новую строку. Это делается через формат "%*c".
Python
простой калькулятор на python(питон)
print("Ноль в качестве знака операции завершит работу программы")
while True:
s = input("Знак (+,-,*,/): ")
if s == '0': break
if s in ('+','-','*','/'):
x = float(input("x="))
y = float(input("y="))
if s == '+':
print("%.2f" % (x+y))
elif s == '-':
print("%.2f" % (x-y))
elif s == '*':
print("%.2f" % (x*y))
elif s == '/':
if y != 0:
print("%.2f" % (x/y))
else:
print("Деление на ноль!")
else:
print("Неверный знак операции!")
Ноль в качестве знака операции завершит работу программы
Знак (+,-,*,/): h
Неверный знак операции!
Знак (+,-,*,/): +
x=78.456
y=23.567
102.02
Знак (+,-,*,/): -
x=3.44
y=10.25
-6.81
Знак (+,-,*,/): *
x=0.012
y=-2.15
-0.03
Знак (+,-,*,/): /
x=5
y=0
Деление на ноль!
Знак (+,-,*,/): /
x=-2.3
y=5
-0.46
Знак (+,-,*,/): 0
КуМир
алг простейший калькулятор
нач
вещ x,y
сим s
нц пока да
вывод "Знак: "
ввод s
если s='0' то выход все
если s='+' или s='-' или s='*' или s='/' то
вывод "x="
ввод x
вывод "y="
ввод y
выбор
при s='+': вывод x+y, нс
при s='-': вывод x-y, нс
при s='*': вывод x*y, нс
при s='/':
если y=0 то вывод "Деление на ноль!", нс
иначе вывод x/y, нс
все
все
иначе
вывод "Неверный знак операции", нс
все
кц
кон
Знак: +
x=5.67
y=-4
1.67
Знак: /
x=5
y=0
Деление на ноль!
Знак: )
Неверный знак операции
Знак: /
x=3
y=10
0.3
Знак: 0
Basic-256
a = 1
while a=1
input "знак: ", s$
if s$ = "0" then
a=0
else
if s$ = "+" or s$ = "-" or s$ = "*" or s$ = "/" then
input "x: ", x
input "y: ", y
if s$ = "+" then print x+y
if s$ = "-" then print x-y
if s$ = "*" then print x*y
if s$ = "/" and y <> 0 then
print x/y
else
print "Деление на ноль"
endif
else
print "Знак может быть +, -, *, /"
endif
endif
endwhile
Не используется if-else при выполнении арифметических операций, т.к. это сильно ухудшает читабельность программы. Хотя по логике было бы более правильно.
Обнаруживается какой-то глюк "Деление на ноль", когда его не должно быть.
Подписаться
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Pascal
простой калькулятор на паскаль
var x,y,z: real; sign: char; begin while True do begin write('sign: '); readln(sign); if sign = '0' then break; if sign in ['+','-','*','/'] then begin write('x='); readln(x); write('y='); readln(y); case sign of '+': begin z := x + y; writeln(z:5:2) end; '-': begin z := x - y; writeln(z:5:2); end; '*': begin z := x * y; writeln(z:5:2); end; '/': if y 0 then begin z := x / y; writeln(z:5:2) end else writeln('Division by zero!'); end; end else writeln('Bad sign!') end; end.
sign: 8 Bad sign! sign: 4 Bad sign! sign: - x=5 y=6 -1.00 sign: + x=4.45 y=10.66 15.11 sign: * x=-3.4 y=-67 227.80 sign: / x=-78 y=123 -0.63 sign: / x=9 y=0 Division by zero! sign: i Bad sign! sign: 0
Язык Си
#include
main() { float x,y; char sign='+'; while (sign != '0') { printf("Знак: "); scanf("%c%*c", &sign); if (sign == '0') { break; } if (sign == '+' || sign == '-' || sign == '*' || sign == '/') { printf("x="); scanf("%f%*c", &x); printf("y="); scanf("%f%*c", &y); switch (sign) { case '+': printf("%.2f\n", x+y); break; case '-': printf("%.2f\n", x-y); break; case '*': printf("%.2f\n", x*y); break; case '/': if (y != 0) printf("%.2f\n", x/y); else printf("Деление на ноль!\n"); } } else printf("Неверно указан знак операции\n"); } }
Знак: 7 Неверно указан знак операции Знак: 3 Неверно указан знак операции Знак: + x=4 y=5 9.00 Знак: / x=0 y=0 Деление на ноль! Знак: - x=-34.4 y=-2 -32.40 Знак: 0
При вводе данных необходимо избавиться от символа перехода на новую строку. Это делается через формат "%*c".
Python
простой калькулятор на python(питон)
print("Ноль в качестве знака операции завершит работу программы") while True: s = input("Знак (+,-,*,/): ") if s == '0': break if s in ('+','-','*','/'): x = float(input("x=")) y = float(input("y=")) if s == '+': print("%.2f" % (x+y)) elif s == '-': print("%.2f" % (x-y)) elif s == '*': print("%.2f" % (x*y)) elif s == '/': if y != 0: print("%.2f" % (x/y)) else: print("Деление на ноль!") else: print("Неверный знак операции!")
Ноль в качестве знака операции завершит работу программы Знак (+,-,*,/): h Неверный знак операции! Знак (+,-,*,/): + x=78.456 y=23.567 102.02 Знак (+,-,*,/): - x=3.44 y=10.25 -6.81 Знак (+,-,*,/): * x=0.012 y=-2.15 -0.03 Знак (+,-,*,/): / x=5 y=0 Деление на ноль! Знак (+,-,*,/): / x=-2.3 y=5 -0.46 Знак (+,-,*,/): 0
КуМир
алг простейший калькулятор нач вещ x,y сим s нц пока да вывод "Знак: " ввод s если s='0' то выход все если s='+' или s='-' или s='*' или s='/' то вывод "x=" ввод x вывод "y=" ввод y выбор при s='+': вывод x+y, нс при s='-': вывод x-y, нс при s='*': вывод x*y, нс при s='/': если y=0 то вывод "Деление на ноль!", нс иначе вывод x/y, нс все все иначе вывод "Неверный знак операции", нс все кц кон
Знак: + x=5.67 y=-4 1.67 Знак: / x=5 y=0 Деление на ноль! Знак: ) Неверный знак операции Знак: / x=3 y=10 0.3 Знак: 0
Basic-256
a = 1 while a=1 input "знак: ", s$ if s$ = "0" then a=0 else if s$ = "+" or s$ = "-" or s$ = "*" or s$ = "/" then input "x: ", x input "y: ", y if s$ = "+" then print x+y if s$ = "-" then print x-y if s$ = "*" then print x*y if s$ = "/" and y 0 then print x/y else print "Деление на ноль" endif else print "Знак может быть +, -, *, /" endif endif endwhile
Не используется if-else при выполнении арифметических операций, т.к. это сильно ухудшает читабельность программы. Хотя по логике было бы более правильно.
Обнаруживается какой-то глюк "Деление на ноль", когда его не должно быть.