Необходимо написать функцию, которая будет работать в качестве калькулятора для строковых выражений вида ' '. В этом выражении представляет собой неотрицательное целое число, меньшее 100, записанное словами (например, «тридцать четыре»), а — одна из операций «плюс», «минус», «умножить». Функция должна возвращать результат выполнения операции в виде текстового представления числа. Пример использования функции:
calc("двадцать пять плюс тринадцать") -> "тридцать восемь".
помимо этого необходимо реализовать следующий функционал:
1. Реализовать поддержку операции деления и остатка от деления и работу с дробными числами (десятичными дробями). Пример:
calc("сорок один и тридцать одна сотая разделить на семнадцать") -> "два и сорок три сотых".
Обрабатывать дробную часть до тысячных включительно, если при делении получаются числа с меньшей дробной частью выполнять округление до тысячных.
2. Реализовать текстовый калькулятор для выражения из произвольного количества операций с учетом приоритета операций. Пример:
calc("пять плюс два умножить на три минус один") -> "десять".
Для реализации рекомендуется использовать алгоритмы, основанные на польской инверсной записи (ссылка).
Добавить поддержку приоритета операций с помощью скобок. Пример:
calc("скобка открывается пять плюс два скобка закрывается умножить на три минус один") -> "двадцать".
Добавить возможность использования отрицательных чисел. Пример:
calc("пять минус минус один") -> "шесть".
Диагностировать ошибки: неправильную запись числа; неправильную последовательность чисел и операций; деление на ноль; неправильную последовательность чисел и операций; некорректный баланс и вложенность скобок; некорректную запись числа.
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |