Матч 178, Простой калькулятор (SimpleCalculator)

Дивизион 2, Уровень 1

 

Калькулятор умеет вычислять четыре арифметических действия и имеет один из следующих входных форматов: <num> + <num>, <num> – <num>, <num> * <num> или  <num> / <num>, где <num> – натуральное число, которое может содержать ведущие нули. Операция деления является целочисленной. В задаче требуется найти значение заданного арифметического выражения.

 

Класс: SimpleCalculator

Метод: int calculate(string input)

Ограничения: 1 £ <num> £ 1000.

 

Вход. Строка input, содержащая одно из арифметических выражений.

 

Выход. Результат вычисления арифметической операции.

 

Пример входа

input

5/3

15*3

1-10000

17+18

 

Пример выхода

1

45

-9999

35

 

 

РЕШЕНИЕ

обработка строк

 

Следует воспользоваться форматированным чтением данных при помощи функции scanf.

 

ПРОГРАММА

 

#include <cstdio>

#include <string>

using namespace std;

 

class SimpleCalculator

{

public:

  int calculate(string input)

  {

    int a, b, res = 0;

    char c;

    sscanf(input.c_str(),"%d%c%d",&a,&c,&b);

    if (c == '+') res = a + b; else

    if (c == '-') res = a - b; else

    if (c == '*') res = a * b; else

    if (c == '/') res = a / b;

    return res;

  }

};