0 / 0 / 0
Регистрация: 17.11.2009
Сообщений: 22
1

Хочу символьный калькулятор

17.07.2011, 22:11. Показов 3804. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно вот что я имею:
Библиотека Symbolic C++.
Интересно мне вот что ... Как бы введенную с клавиатуры строку типа string ( например «cos(x)+x») присвоить символьной переменной так, чтобы программа вычисляя числовое значение выражения в этой переменной возвращала бы значение введенной функции ?

вот такой пример... как бы «y=cos(x)» вводить с клавиатуры ?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdafx.h"
#include "iostream"
#include "SymbolicC++.h"
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    Symbolic x,y;
    for (x=0; (double)x<3.1415;)
    {
        y=cos(x);
        std::cout << std::endl << y;
        x+=0.01;
    }
    cin.get();
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.07.2011, 22:11
Ответы с готовыми решениями:

Хочу написать программу-калькулятор под ,допустим,игру
Хочу написать калькулятор характеристик для персонажей в игре,писать буду на с++,vs10. Помогите...

Хочу написать калькулятор
Всем благословений!!! Создал форму калькулятора. &lt;link rel=&quot;stylesheet&quot; href=&quot;calc.css&quot;&gt; ...

Создал калькулятор, хочу услышать мнения
Всем привет. Мне было поставлено задание создать калькулятор, банальное задание но все же,...

Хочу написать калькулятор ионов для солей
Ребята, все привет. Нужна помощь, хочу написать калькулятор ионов для солей. Он такой есть вот тут....

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
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Coyote112358, синтаксический разбор строки надо делать. Хотя бы ограниченный и минимальный. У нас первокурсники вполне справляются в курсовых...
Ох уж эти первокурсники с их преподами...
Предположите что есть разборщик строк...
Дальше что делать?
На выходе этого разборщика что у Вас?
0
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
17.07.2011, 22:41 4
Цитата Сообщение от Coyote112358 Посмотреть сообщение
На выходе этого разборщика что у Вас?
на выходе результат

Цитата Сообщение от Coyote112358 Посмотреть сообщение
вот такой пример... как бы «y=cos(x)» вводить с клавиатуры ?
так , а в чем собсно проблема, определи присваивание
(к примеру обрубить всё что после =, посчитать и присвоить)
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
17.07.2011, 23:02 5
Цитата Сообщение от Coyote112358 Посмотреть сообщение
Ох уж эти первокурсники с их преподами...
Предположите что есть разборщик строк...
Дальше что делать?
На выходе этого разборщика что у Вас?
Польская запись (лексем) на выходе. Которая за один проход вычисляется
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.07.2011, 12:09
Помогаю со студенческими работами здесь

На сайте я хочу сделать калькулятор расчета доставки товара,
Здравствуйте! На сайте я хочу сделать калькулятор расчета доставки товара, но я новичок в php. Для...

Подскажите, что делаю не так. Хочу сделать калькулятор, но у меня не выводятся на экран кнопки
Подскажите, что делаю не так. Хочу сделать калькулятор, но у меня не выводятся на экран кнопки. ...

Хочу сделать программно инженерный калькулятор, каким методом лучше сделать?
Я изучал в вузе там расписывается , как-то с помощью высшей математики, где всё сходится на ...

Скопировать одномерный символьный массив в двумерный символьный массив
Здравствуйте, учусь программировать на Си. Столкнулся с проблемой: не могу скопировать одномерный...

Хочу создать свой сервер. Но прежде хочу подумать о его защите
Какие пути защиты веб сервера существуют от несанкционированного доступа? Я знаю, что существуют...

Хочу стать одним из них, а точнее хочу быть сисадмином
Доброго времени суток! Самые умные форумчане - программисты, сисадмины, серверы, и тд Хочу стать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru