подсчет стринг массива "280+4/2"
Подскажите, как подсчитать стринг массив (например, "280+4/3"), т.е. чтобы результат был числом. Функция atol не подходит, т.к. не понимает знаки "+", "/".
Может есть другие функции? Или же все же самому прописывать, например, вытягивать отдельно числа и потом производить вычисление?
Заранее спасибо.
Конечно самому. Например, с использованием алгоритма Дейкстры. У меня есть подобный опыт
здесь .
Погугли на тему "обратная польская запись", думаю наверняка есть какие нибудь готовые библиотеки парсинга, которые это уже умеют.
Обычно это решается посредством обратной польской записи. Строка преобразуется из префиксной в постфиксную, на основе дерева, где "дуги" - операции, а "листья" - операнды. Вообщем алгоритм сложен только при преобразовании исходной строки в "польку", а далее вычислить по такой строке не представлется сложным занятием. Алгоритм
Погугли на тему "обратная польская запись", думаю наверняка есть какие нибудь готовые библиотеки парсинга, которые это уже умеют.
Тогда нужны интерфейсы для хранения кода, поиска, изменения значения переменных и т.д.
Плюс обработка и поиск ошибок.
Для такой простой задачи вполне подойдет алгоритм и код по ссылке