Напишите простой калькулятор, который считывает с пользовательского ввода три строки:...

+531 голосов
3.5m просмотров

Напишите простой калькулятор, который считывает с пользовательского ввода три строки: первое число, второе число и операцию, после чего применяет операцию к введённым числам ("первое число" "операция" "второе число") и выводит результат на экран. Поддерживаемые операции: +, -, /, *, mod, pow, div, где mod — это взятие остатка от деления, pow — возведение в степень, div — целочисленное деление. Если выполняется деление и второе число равно 0, необходимо выводить строку "Деление на 0!".


Информатика (16 баллов) | 3.5m просмотров
Дано ответов: 2
+88 голосов

Ответ:

a=float(input())

b=float(input())

c=input()

if c=='+': print (a + b)

if c=='-': print (a-b)

if c=='/' and b ==0.0: print("Деление на 0!")

if c=='/' and b!=0.0 : print(a/b)

if c=='*': print(a*b)

if c=='pow': print(a**b)

if c=='div' and b==0.0: print("Деление на 0!")

if c=='div' and b!=0.0: print(a//b)

if c=='mod' and b==0.0: print ("Деление на 0!")

if c=='mod' and b!=0.0: print (a%b)

(3.9k баллов)
+140 голосов

Ответ:

  • var a, b: real; s: string;
  • begin
  • readln(a);
  • readln(b);
  • readln(s);
  • if s = '+' then write(a + b);
  • if s = '-' then write(a - b);
  • if s = '/' then if b <> 0 then write(a / b) else write('Деление на 0!');
  • if s = '*' then write(a * b);
  • if s = 'mod' then if b <> 0 then write(Round(a) mod Round(b)) else write('Деление на 0!');
  • if s = 'pow' then write(power(a, b));
  • if s = 'div' then if b <> 0 then write(Round(a) div Round(b)) else write('Деление на 0!');
  • end.

Пояснение:

В pascal операции mod и div к вещественным типам недоступны, поэтому округляем их через Round. Можно поменять на Trunc - он возвратит только целую часть.

Однако правильнее будет делать через case:

  • var a, b: real; s: string;
  • begin
  • readln(a);
  • readln(b);
  • readln(s);
  • case s of
  • char.ToString('+'): write(a + b);
  • char.ToString('-'): write(a - b);
  • char.ToString('/'): if b <> 0 then write(a / b) else write('Деление на 0!');
  • char.ToString('*'): write(a * b);
  • 'mod': if b <> 0 then write(Round(a) mod Round(b)) else write('Деление на 0!');
  • 'pow': write(power(a, b));
  • 'div': if b <> 0 then write(Round(a) div Round(b)) else write('Деление на 0!');
  • end;
  • end.

Пояснение:

В case '+', '-', '/', '*' воспринимаются как char, поэтому переводим их в string через стандартный метод класса char: char.ToString( )

Примеры работ:


image
image
(3.7k баллов)