У студента Васи
есть младший брат Петя, который пошёл в первый класс и начал изучать
арифметику. На домашнее задание в первом классе им дали много примеров на
сложение и вычитание. Петя попросил Васю проверить его домашнее задание. Увидев
две страницы написанных каракулями примеров, Вася пришёл в ужас от объёма
работы и решил научить Петю
использовать компьютер для самопроверки . Для
этого Васе нужно
написать программу, которая будет
вычислять решение требуемых арифметических примеров.
Вход. Одна строка, в которой могут встречаться цифры и символы ‘+’ и ‘-’. Длина строки
не превышает 10000 символов, значение всех чисел в ней не превышает 10000.
Выход. Выведите одно целое число – результат вычислений.
Пример
входа |
Пример
выхода |
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);
Первое слагаемое
читаем в переменную res.
cin >> res;
Продолжаем цикл до тех пор, пока следующим символом не
будет символ конца строки ‘\n’. Функция peek
возвращает следующий символ из входного потока, не извлекая его.
while(cin.peek() != '\n')
{
Читаем знак операции ch (сложения или
вычитания), и следующее за ним число x. Прибавляем x к res или
вычитаем x из res.
cin >> ch >> x;
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();
}
}
Вычисляем значение введенного выражения и выводим
результат.
· Функция eval() вычисляет строку как Python выражение и
возвращает результат.
print(eval(input()))