Найпростіший калькулятор, рішення задач з програмування

Написати програму, яка буде складати, віднімати, множити або ділити два числа. Числа і знак операції вводяться користувачем. Після виконання обчислення програма не повинна завершуватися, а повинна запитувати нові дані для обчислень. Завершення програми повинно виконуватися при введенні символу "0" в якості знака операції. Якщо користувач вводить невірний знак (не "0", "+", "-", "*", "/"), то програма повинна повідомляти йому про помилку і знову запитувати знак операції. Також повідомляти користувачеві про неможливість поділу на нуль, якщо він ввів 0 в якості подільника.

Пояснення до задачі і алгоритм рішення

Запустити нескінченний цикл.

  1. Запросити введення знака операції.
  2. Якщо був введений "0", то перервати цикл операцією break.
  3. Якщо був введений один з знаків арифметичних операцій, то в залежності від того, який знак був введений, виконати відповідне йому арифметичну дію. При цьому при розподілі перевірити чи не був введений нуль. Якщо це так, то вивести повідомлення, інакше виконати поділ.
  4. Інакше повідомити про невірно введеному знаку.

Вихідний код на мові програмування Pascal

var
x. y. z. real;
sign. char;
begin
while True do begin
write # 40; 'Sign:' # 41; ; readln # 40; sign # 41; ;
if sign = "0" then break;
if sign in # 91; '+'. '-'. '*'. '/' # 93; then begin
write # 40; 'X =' # 41; ; readln # 40; x # 41; ;
write # 40; 'Y =' # 41; ; readln # 40; y # 41; ;
case sign of
'+'. begin z. = X + y; writeln # 40; z. 5. 2 # 41; end;
'-'. begin z. = X - y; writeln # 40; z. 5. 2 # 41; ; end;
'*'. begin z. = X * y; writeln # 40; z. 5. 2 # 41; ; end;
'/'. if y <> 0 then begin
z. = X / y;
writeln # 40; z. 5. 2 # 41;
end
else
writeln # 40; 'Division by zero!' # 41; ;
end;
end
else writeln # 40; 'Bad sign!' # 41;
end;
end.

Приклад (и) виконання програми на мові Pascal

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

Вихідний код на мові програмування C

main # 40; # 41; # 123;
float x. y;
char sign = '+';
while # 40; sign! = '0' # 41; # 123;
printf # 40; "Знак:" # 41; ;
scanf # 40; "% C% * c". sign # 41; ;
if # 40; sign == '0' # 41; # 123; break; # 125;
if # 40; sign == '+' || sign == '-' || sign == '*' || sign == '/' # 41; # 123;
printf # 40; "X =" # 41; ;
scanf # 40; "% F% * c". x # 41; ;
printf # 40; "Y =" # 41; ;
scanf # 40; "% F% * c". y # 41; ;
switch # 40; sign # 41; # 123;
case '+'.
printf # 40; "% .2f \ n". x + y # 41; ;
break;
case '-'.
printf # 40; "% .2f \ n". x - y # 41; ;
break;
case '*'.
printf # 40; "% .2f \ n". x * y # 41; ;
break;
case '/'.
if # 40; y! = 0 # 41; printf # 40; "% .2f \ n". x / y # 41; ;
else printf # 40; "Розподіл на нуль! \ N" # 41; ;
# 125;
# 125;
else printf # 40; "Невірно вказаний знак операції \ n" # 41; ;
# 125;
# 125;

Приклад (и) виконання програми на мові C

Знак: 7
Невірно вказано знак операції
Знак: 3
Невірно вказано знак операції
Знак: +
x = 4
y = 5
9.00
Знак: /
x = 0
y = 0
Ділення на нуль.
Знак: -
x = - 34.4
y = - 2
- 32.40
Знак: 0

Особливості рішення на мові програмування C

При введенні даних необхідно позбутися від символу переходу на новий рядок. Це робиться через формат "% * c".

Вихідний код на мові програмування Python

print # 40; "Нуль як знак операції завершить роботу програми" # 41;
while True:
s = input # 40; "Знак (+, -, *, /):" # 41;
if s == '0'. break
if s in # 40; '+'. '-'. '*'. '/' # 41; :
x = float # 40; input # 40; "X =" # 41; # 41;
y = float # 40; input # 40; "Y =" # 41; # 41;
if s == '+':
print # 40; "% .2f"% # 40; x + y # 41; # 41;
elif s == '-':
print # 40; "% .2f"% # 40; x-y # 41; # 41;
elif s == '*':
print # 40; "% .2f"% # 40; x * y # 41; # 41;
elif s == '/':
if y! = 0:
print # 40; "% .2f"% # 40; x / y # 41; # 41;
else:
print # 40; "Ділення на нуль!" # 41;
else.
print # 40; "Невірний знак операції!" # 41;

Приклад (и) виконання програми на мові Python

Нуль в якості знака операції завершить роботу програми
знак # 40; +, -, *. / # 41 ;. h
Невірний знак операції.
знак # 40; +, -, *. / # 41 ;. +
x = 78.456
y = 23.567
102.02
знак # 40; +, -, *. / # 41 ;. -
x = 3.44
y = 10.25
- 6.81
знак # 40; +, -, *. / # 41 ;. *
x = 0.012
y = - 2.15
- 0.03
знак # 40; +, -, *. / # 41 ;. /
x = 5
y = 0
Ділення на нуль.
знак # 40; +, -, *. / # 41 ;. /
x = - 2.3
y = 5
- 0.46
знак # 40; +, -, *. / # 41 ;. 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
Ділення на нуль.
знак: # 41;
Невірний знак операції
Знак: /
x = 3
y = 10
0.3
Знак: 0

Вихідний код на мові програмування Basic

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

Приклад (и) виконання програми на мові Basic

знак: /
x: 9
y: 0
Ділення на нуль
знак: -
x: 9
y: -8
17
Ділення на нуль
знак: /
x: 9
y: -8
- 1.125
знак: 0

Особливості рішення на мові програмування Basic

Ні оператора break, оператора вибору case.

Не використовується if-else при виконанні арифметичних операцій, тому що це сильно погіршує Новомосковскбельность програми. Хоча за логікою було б більш правильно.

Виявляється якийсь глюк "Ділення на нуль", коли його не повинно бути.

Схожі статті