0 / 0 / 0
Регистрация: 17.11.2009
Сообщений: 22
|
||||||
1 | ||||||
Хочу символьный калькулятор17.07.2011, 22:11. Показов 3804. Ответов 7
Метки нет (Все метки)
Собственно вот что я имею:
Библиотека Symbolic C++. Интересно мне вот что ... Как бы введенную с клавиатуры строку типа string ( например «cos(x)+x») присвоить символьной переменной так, чтобы программа вычисляя числовое значение выражения в этой переменной возвращала бы значение введенной функции ? вот такой пример... как бы «y=cos(x)» вводить с клавиатуры ?
0
|
17.07.2011, 22:11 | |
Ответы с готовыми решениями:
7
Хочу написать программу-калькулятор под ,допустим,игру Хочу написать калькулятор Создал калькулятор, хочу услышать мнения Хочу написать калькулятор ионов для солей |
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
17.07.2011, 22:31 | 2 |
Coyote112358, синтаксический разбор строки надо делать. Хотя бы ограниченный и минимальный. У нас первокурсники вполне справляются в курсовых...
1
|
0 / 0 / 0
Регистрация: 17.11.2009
Сообщений: 22
|
|
17.07.2011, 22:38 [ТС] | 3 |
Ох уж эти первокурсники с их преподами...
Предположите что есть разборщик строк... Дальше что делать? На выходе этого разборщика что у Вас?
0
|
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
|
|
17.07.2011, 22:41 | 4 |
на выходе результат
так , а в чем собсно проблема, определи присваивание (к примеру обрубить всё что после =, посчитать и присвоить)
0
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
17.07.2011, 23:02 | 5 |
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
18.07.2011, 11:53 | 6 |
Сообщение было отмечено как решение
Решение
Паттерны "Интерпретатор" и "Компоновщик" в помощь. На каждую операцию/функцию пишется свой класс, все эти классы наследуются от базового абстрактного "Expression", в котором есть чисто виртуальная функция calculate. В каждом конкретном классе функция calculate реализуется по-своему. Выражение разбирается рекурсивным спуском, на основе которого строится дерево, узлами которого являются операции,а листьями - операнды. Вычисление заключается в обходе этого дерева и вызове для каждого узла функции calculate.
Добавлено через 1 минуту Ааа, не учёл, что уже есть библиотека символьных вычислений... Тогда да, разбор строки надо делать. Но его я бы всё равно делал рекурсивным спуском.
3
|
Kastaneda
|
18.07.2011, 12:03
#7
|
Не по теме:
Сообщение от Coyote112358
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
18.07.2011, 12:09 | 8 |
Coyote112358, каким образом выражение хранится в переменной Symbolic? Т.е. именно в виде выражения? Если да, то можно применить обычный рекурсивный спуск, с той разницей, что обрабатывать не переменные типа double и по завершении разбора получать числовой результат, а обрабатывать объекты Symbolic, а на выходе получить переменную Symbolic, хранящую разобранное выражение.
Тогда, кстати, можно и ОПЗ применить. Переводим выражение из инфиксной нотации в постфиксную, а вместо вычисления на стеке выполняем операции над объектом Symbolic (т.е. с языковой точки зрения выполняем обычные операции вычисления функций, сложения, вычитания, умножения и т.д.), а вот с точки зрения класса Symbolic формируем символьное выражение в результирующей символьной переменной.
1
|
18.07.2011, 12:09 | |
18.07.2011, 12:09 | |
Помогаю со студенческими работами здесь
8
На сайте я хочу сделать калькулятор расчета доставки товара, Подскажите, что делаю не так. Хочу сделать калькулятор, но у меня не выводятся на экран кнопки Хочу сделать программно инженерный калькулятор, каким методом лучше сделать? Скопировать одномерный символьный массив в двумерный символьный массив Хочу создать свой сервер. Но прежде хочу подумать о его защите Хочу стать одним из них, а точнее хочу быть сисадмином Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |