Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Перевод в постфиксную запись и вычисление простых арифметических выражений

Описание

Для арифметических выражений допустимы операции: сложения(+), вычитания(-), умножения(*), деления(/), а также унарные + и - (в постфиксной записи + не учитывается, а - обозначается через !).

Арифметическое выражение может содержать идентификаторы, значения которых задаются при запуске и их длина равна 1 символу, а также скобки ( ).

Разработанная программа выводит:

  • постфиксную запись выражения
  • вычисленное значение выражения по постфиксной записи

Подробнее

Программа основана на Алгоритме сортировочной станции с модификацией в части унарных операторов.

Структура

Программа представляет собой проект в msvs (SImplePostfixGenerator.sln) и написана на C++17 с использовнием STL.

Заголовочные файлы:

  • Tokens - классы для токенов
  • tests - тесты
  • main - функция, решающая задачу
  • Funcs - Класс, хранящий для работы с постфиксным выражением
  • Symbols - Словари, задающие операторы и их свойства

Использовние

  • 1 вариант

Использование функции solve с передачей потоков ввода вывода и флага, контролирующего вывод сообщений запроса

solve(cin, cout, false); 
  • 2 варинат

Использование функций tokenize, to_postfix и класса NExpr

Пример:
Перевод в токены строки str

auto in_tokens = tokenize(str);

Перевод в постфиксную запись

auto tokens = to_postfix(in_tokens);

Присванивание значений переменным из словаря vars_to_vals

tokens.set_vars(vars_to_vals);

Получение строки с постфиксным выражением

auto postfix = tokens.to_string();

Вычисление по постфиксному выражению

auto result = tokens.eval();

Важно

Перевод ошибочных выражений и попытка вычисления выражения с переменными без значений приводят к исполючениям std::invalid_argument.

About

Перевод в постфиксную запись и вычисление простых арифметических выражений

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages