8000 GitHub - Saulains/lab3_calculator
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Saulains/lab3_calculator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lab3_calculator

Задание

Написать небольшое приложение-калькулятор На вход ему подаётся арифметическое выражение: числа, соединенные знаками арифметических операций. Пробелы между лексемами игнорируются: 1 + 1, 1+ 1, 1 +1, 1+1 - одно и то же выражение. Но 11 + 1 и 1 1 + 1 - разные выражения (последнее некорректно). Далее на последующих этапах требование к выражению будет изменяться. На выходе должен быть результат или сообщение об ошибке, если выражение нельзя вычислить. При ошибке, код возврата приложения должен быть отличен от 0. В приложении должно быть как минимум 2 функции/класса: * Парсер. Принимает строку (например ), возвращает разобранное выражение (например, дерево ). * Вычислитель выражения. По заданному внутреннему представлению вычислить значение (наприемер Plus(2, Mult(3, 5)) -> 17).

Этап 1

Должна быть поддержка операций +, -, /, , а также целых и нецелых чисел. Вычисления должны производиться хотя бы с точностью, обеспечиваемой типом float64. Следовательно, потеря точности вычислений не является ошибкой. "1 + 0.0000000000000000000001" -> 1 - корректный результат. "1 + 2+35 Plus(2, Mult(3, 5)) 0.0000000000000000000001" -> 1.0000000000000000000001 - тоже корректный результат, но требует более высокой точности вычислений. Результат должен отображаться в виде десятичной дроби 12.3456 или в виде экспоненциальной записи 1.35e-23.

Этап 2

Парсинг чисел в "научной" нотации: 1.25e+09 -> 1250000000. Поддержка операции возведения в степень ^: 3^4 -> 81. Поддержка скобочных выражений: 1 + 2 / (3 + 4) -> 1.2857142857142856. Добавить соответствующие модульные тесты. Удалить/выключить неактуальные тесты.

Этап 3

Поддержка функций sqrt, sin, cos, tg, ctg, ln, exp. Поддержка констант pi, e. sqrt(ln(e)) -> [Парсер + Вычислитель] -> 1. Поддержка аргументов тригонометрических функций в виде градусов и в виде радиан посредством флага (CLI). Радианы - по умолчанию. Добавить соответствующие тесты. Удалить/выключить неактуальные тесты.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

0