Простой
калькулятор может вычислять следующие выражения:
·
num + num
·
num - num
·
num * num
·
num / num
где num – положительное целое число, между 1
и 10000 включительно.
Найдите
значение заданного выражения. Символы +, -, * и / обозначают операции сложения,
вычитания, умножения и деления соответственно. Все операции целочисленные, так
что “5 / 3” равно 1.
Вход. Строка
содержит выражение, которое может вычислить простой калькулятор.
Выход. Выведите
результат заданного выражения.
Пример входа 1 |
Пример выхода 1 |
3 * 12 |
36 |
|
|
Пример входа 2 |
Пример выхода 2 |
16 + 45 |
61 |
строки
Заданный
пример читаем как последовательность трех лексем: число символ число. В зависимости от арифметической операции
вычисляем ответ.
Реализация алгоритма
Читаем входные данные.
scanf("%d %c %d",&a,&c,&b);
В зависимости от арифметической операции вычисляем ответ.
if (c == '+') res = a + b;
if (c == '-') res = a - b;
if (c == '*') res = a * b;
if (c == '/') res = a / b;
Выводим ответ.
printf("%d\n",res);
Реализация алгоритма – sscanf / sprintf
#include <iostream>
#include <string>
using namespace std;
char s[100];
int a, b, res;
char c;
int main(void)
{
gets(s);
sscanf(s, "%d %c %d", &a, &c, &b);
if (c == '+') res = a + b;
if (c == '-') res = a - b;
if (c == '*') res = a * b;
if (c == '/') res = a / b;
sprintf(s, "%d", res);
puts(s);
return 0;
}
Реализация алгоритма – STL
#include <iostream>
#include <string>
using namespace std;
int a, b, res;
char c;
int main(void)
{
cin >>
a >> c >> b;
if (c == '+') res = a + b;
if (c == '-') res = a - b;
if (c == '*') res = a * b;
if (c == '/') res = a / b;
cout << res << endl;
return 0;
}
Реализация алгоритма – switch
#include <stdio.h>
int a, b, res;
char c;
int main(void)
{
scanf("%d %c %d", &a, &c, &b);
switch (c)
{
case '+':
res = a + b;
break;
case '-':
res = a - b;
break;
case '*':
res = a * b;
break;
case '/':
res = a / b;
}
printf("%d\n", res);
return 0;
}
Java реализация
import
java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int a = con.nextInt();
String ch = con.next();
int b = con.nextInt();
int res = 0;
if (ch.equals("+")) res = a + b;
if (ch.equals("-")) res = a - b;
if (ch.equals("*")) res = a * b;
if (ch.equals("/")) res = a / b;
System.out.println(res);
con.close();
}
}
Java реализация – switch
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int a = con.nextInt();
String ch = con.next();
int b = con.nextInt();
int res = 0;
switch (ch)
{
case "+": res = a + b; break;
case "-": res = a - b; break;
case "*": res = a * b; break;
case "/": res = a / b; break;
}
System.out.println(res);
con.close();
}
}
Java реализация – class, version 1
import java.util.*;
class Number
{
private int n;
Number(int n)
{
this.n = n;
}
public int getValue()
{
return n;
}
public void
Add(int a)
{
n += a;
}
public void
Minus(int a)
{
n -= a;
}
public void
Multiply(int a)
{
n *= a;
}
public void
Divide(int a)
{
n /= a;
}
};
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int a = con.nextInt();
String ch = con.next();
int b = con.nextInt();
Number n = new Number(a);
if (ch.equals("+")) n.Add(b);
if (ch.equals("-")) n.Minus(b);
if (ch.equals("*")) n.Multiply(b);
if (ch.equals("/")) n.Divide(b);
System.out.println(n.getValue());
con.close();
}
}
Java реализация – class, version 2
import
java.util.*;
class
Number
{
private int n;
Number()
{
this.n = 0;
}
Number(int n)
{
this.n = n;
}
public int getValue()
{
return n;
}
public Number Add(int a)
{
return new Number(n + a);
}
public Number Minus(int a)
{
return new Number(n - a);
}
public Number Multiply(int a)
{
return new Number(n * a);
}
public Number Divide(int a)
{
return new Number(n / a);
}
};
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int a = con.nextInt();
String ch = con.next();
int b = con.nextInt();
Number n = new Number(a);
Number res = new Number();
if (ch.equals("+")) res = n.Add(b);
if (ch.equals("-")) res = n.Minus(b);
if (ch.equals("*")) res = n.Multiply(b);
if (ch.equals("/")) res = n.Divide(b);
System.out.println(res.getValue());
con.close();
}
}
Python реализация
Читаем входные данные.
a, sign, b = input().split()
a = int(a)
b = int(b)
В зависимости от арифметической операции вычисляем ответ.
if sign == "+":
res = a + b
if sign == "-":
res = a – b
if sign == "*":
res = a * b
if sign == "/":
res = a // b
Выводим ответ.
print(res)