Лабораторная работа №3
Инфиксная нотация
Инструментарий и требования к работе
Работа выполняется на C (C11 и новее). На сервере сборка под C17.
Задание
Написать программу, выполняющую разбор и вычисление выражения в инфиксной записи.
Входные, выходные и переменные для промежуточных вычислений – 32-битные целые со знаком, заданные в десятичной системе счисления.
Допустимые операторы-токены: все стандартные арифметические операторы (Arithmetic operators -
cppreference.com), (, ), степень **. Для ** приоритет самый высокий и результатом является целочисленное возведение в степень. Арифметика целочисленная. Чтобы работа принималась на защиту, должно поддерживаться вычисление выражений, включающих операторы разных приоритетов (простыми словами, программа, выполняющая “3 + 5”, не принимается).
Операнды и операторы разделены пробелом всегда, кроме случая использования унарных операторов – в таком случае может не быть пробела между оператором и операндом.
Требования к реализации
Единственным аргументом программе подаётся выражение. Пример вызова программы с аргументами: lab3.exe "2 ? 1"
В стандартный поток вывода должна быть записана нуль-терминированная строка результата с переводом строки в конце.
argv[1]
stdout
3 + 4 * ( 2 ? 1 )
7
( 2 ** 1 ) + +5 / 1 - -2 + 6 * ( 7 >> 2 ) % 4