1427. Калькулятор

 

Вася – студент, у которого есть младший брат Петя. Петя только что пошёл в первый класс и начал изучать арифметику. Для домашнего задания ему дали множество примеров на сложение и вычитание. Петя попросил Васю проверить его работу. Увидев две страницы, исписанные примерами, Вася ужаснулся объёму работы и решил научить Петю пользоваться компьютером для самопроверки. Для этого Вася решил написать программу, которая будет вычислять ответы на арифметические примеры.

 

Вход. Одна строка, которая содержит цифры и символы ‘+и-. Длина строки не превышает 104, а значение каждого числа в строке не больше 104.

 

Выход. Выведите одно целое число – результат вычисления.

 

Пример входа

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

1+22-3+4-5+123

142

 

 

РЕШЕНИЕ

строки

 

Анализ алгоритма

Читаем первое слагаемое в переменную res. Затем оставшуюся строку разбиваем на пары: символ операции и слагаемое.

 

Последовательно читаем пары (символ, число) до конца файла, выполняя соответствующие действия.

 

Реализация алгоритма

Первое слагаемое читаем в переменную res.

 

scanf("%d",&res);

 

Читаем знак операции ch (сложения или вычитания), и следующее за ним число x. Прибавляем x к res или вычитаем x из res.

 

while (scanf("%c%d", &ch, &x) == 2)

  if (ch == '+') res += x; else res -= x;

 

Выводим результат вычислений.

 

printf("%d\n",res);

 

Реализация алгоритма – iostream

Первое слагаемое читаем в переменную res.

 

cin >> res;

 

Читаем входные данные до конца файла. Читаем знак операции ch (сложения или вычитания), и следующее за ним число x.

 

while (cin >> ch >> x)

 

Прибавляем x к res или вычитаем x из res.

 

  if (ch == '+') res += x; else res -= x;

 

Выводим результат вычислений.

 

cout << res << endl;

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    String s = con.nextLine();

    StringTokenizer st1 = new StringTokenizer(s, "+-");

    StringTokenizer st2 = new StringTokenizer(s, "0123456789");

    int res = Integer.parseInt(st1.nextToken());

    while (st1.hasMoreTokens())

    {

      int x = Integer.parseInt(st1.nextToken());

      if (st2.nextToken().equals("+")) res += x;

      else res -= x;

    }

    System.out.println(res);

    con.close();

  }

}

 

Python реализация

Вычисляем значение введенного выражения и выводим результат.

·     Функция eval() вычисляет строку как Python выражение и возвращает результат.

 

print(eval(input()))