Вычисление выражений
Это задача о вычислении выражений, записанных в стиле языка программирования С. Выражения могут содержать только простые целочисленные переменные и ограниченное количество операторов; константы в выражениях отсутствуют. В программе используются 26 переменных, имена которых задаются буквами нижнего регистра от a до z. Перед началом вычислений начальные значения переменных следующие: a = 1,b = 2, ..., z = 26.
Допустимыми операциями являются сложение и вычитание (бинарные + и -) со стандартным семантическим смыслом. Так, значением выражения a + c - d + b будет число 2 (1 + 3 - 4 + 2). Входные выражения могут также содержать унарные операции ++ и —, которые могут находиться как перед, так и после переменных. Если оператор ++ стоит перед переменной, то значение переменной увеличивается на единицу перед ее использованием в вычислении всего выражения. Значением выражения ++ c - b будет 2. Если оператор ++ следует после переменной, то увеличение значения переменной на один происходит после ее использования в выражении. Значение c ++ - b равно 1, значение c увеличивается после вычисления всего выражения, оно становится равным 4. Оператор – ведет себя таким же образом, только он уменьшает на единицу значение операнда.
Если говорить формально, то выражение вычисляется следующим образом:
Находим все переменные, которым предшествует оператор ++. Записываем оператор присваивания, увеличивающий их значения. После чего удаляем ++ перед переменными во всем выражении.
Аналогично обрабатываем операторы ++, находящиеся после переменных.
Теперь операторы ++ отсутствуют в выражении. Вычисляем значение выражения, полученного после шага 1 и перед выполнением шага 2.
Выполняем предписания, указанные в шаге 1, потом в шаге 3, а потом в шаге 2.
Таким образом, вычисление ++ a + b ++ эквивалентно выполнению следующих операций: a = a + 1, result = a + b и b = b + 1.
Входные данные
Первая строка содержит количество тестов t. Каждая из следующих t строк содержит одно выражение. Пробелы во входных выражениях следует игнорировать. Будьте уверены, что выражения не содержат неоднозначностей (как например a+++b). Операторы ++ или – не могут одновременно находиться до и после одной переменной (как например ++a++). Каждая переменная встречается в выражении только один раз.
Выходные данные
Для каждого теста выведите выражение в том же виде в котором оно поступает на вход, затем выведите значение всего выражения. Далее выведите значения всех переменных после вычисления выражения (отсортировав при этом имена переменных). Выводить следует значения только тех переменных, которые используются в выражении. Формат вывода приведен в примере.