8319. Простой калькулятор

 

Простой калькулятор может вычислять следующие выражения:

·        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)