Форум программистов, компьютерный форум CyberForum.ru

C++. Запись матем. выражений в переменную - C++

Восстановить пароль Регистрация
 
quale33
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 9
02.04.2013, 23:16     C++. Запись матем. выражений в переменную #1
Здравствуйте. Есть программа, высчитывающая интеграл.
Вот функция, содержащая формулу для интеграла:
C++
1
2
3
4
double f(double x)
{
return exp(-pow(x,2));
}
Вот часть из главной функции, где используется вышеназванная ф-ция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{///////////////Метод трапеций
 
                     double a = 0,b = 0,h = 0,x,S = 0;
 
                         cout<<"\tВведите диапазон [a;b] интегрирования\r\n";
                            cout<<"a = ";cin>>a;
                             cout<<"b = ";cin>>b;
                        cout<<"Введите шаг интегрирования\r\n";
                             cout<<"h = ";cin>>h;
                         x = a;
 
                      while(x < b)
                         {
                            S = S + 0.5*(f(x + h) + f(x))*h;
                             x = x + h;
                         }
                 cout<<"Интеграл $f(x) равен = "<<S<<"\r\n";
                     
                    }
Вопрос заключается в том, что необходимо сделать программу универсальной. Т.е. организовать ввод пользователем интегральной формулы в какую-либо переменную функции f, которая будет так же возвращаться. Сколько мучился, никак не смог подобрать тип переменной, для занесения матем. формулы. Подскажите пожалуйста, как это все организовать. Заранее благодарен.

Добавлено через 31 минуту
up.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GoodHumster
 Аватар для GoodHumster
1 / 1 / 0
Регистрация: 01.04.2013
Сообщений: 24
02.04.2013, 23:44     C++. Запись матем. выражений в переменную #2
Можно в ф-у ввести ещё один параметр типа char[n] в этот параметр будет передаваться формула напечатаная с клавиатуры,ну а дальше дело техники:переводишь из char в int и будет тебе счастье)так же в консоле надо вывести справочку т.е ты должен будешь указать как правильно вводить в консоле формулы и так же проверять правильность их если они введены не правильно ты должен будешь сообщать об ошибке и указать на неё)))
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
03.04.2013, 00:07     C++. Запись матем. выражений в переменную #3
Ты забыл сказать, что чтобы из строки получить числовое значение, нужно разобрать строку на основе грамматики, [построить промежуточное представление,] подставить значения аргументов и вычислить результат.
GoodHumster
 Аватар для GoodHumster
1 / 1 / 0
Регистрация: 01.04.2013
Сообщений: 24
03.04.2013, 00:21     C++. Запись матем. выражений в переменную #4
хмм...точно ну,я так прикинул как бы я делал)
quale33
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 9
03.04.2013, 00:24  [ТС]     C++. Запись матем. выражений в переменную #5
Вот нашел пару обращений к массиву.. но не могу додуматься как это использовать в функции, содержащей формулу и соотв-но в главной функции.
C++
1
2
itoa() //число в строку; преобразовывает- int ->char
ltoa() // преобразовываетlong->char
Может кто нибудь накинуть код, хотя бы примерно, как это все должно получится?
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
03.04.2013, 00:42     C++. Запись матем. выражений в переменную #6
Цитата Сообщение от quale33 Посмотреть сообщение
Вот нашел пару обращений к массиву.. но не могу додуматься как это использовать в функции, содержащей формулу и соотв-но в главной функции.
C++
1
2
itoa() //число в строку; преобразовывает- int ->char
ltoa() // преобразовываетlong->char
Может кто нибудь накинуть код, хотя бы примерно, как это все должно получится?
Никак, вам нужно построить анализатор выражений (на вскидку, почитайте про lex, flex и т.п.), и только потом вы сможете вашу программу сделать универсальной.
Вариант №2, поищите готовые решения. например http://muparser.beltoforion.de/
machet1k
1 / 1 / 1
Регистрация: 20.12.2011
Сообщений: 33
03.04.2013, 00:57     C++. Запись матем. выражений в переменную #7
хм... очень мало ответов в такой интересной теме, которая полезна многим.
quale33
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 9
03.04.2013, 01:08  [ТС]     C++. Запись матем. выражений в переменную #8
Сейчас мошню с переводом
C++
1
2
3
4
5
6
double f(double x)
{
     char buffer[256]="cos(x)";
        double n = atof (buffer);
    return n;
}
На сколько понял, atof переводит символы в числовое представление.
Теперь интересно, в какой части программы заполнить массив buffer с помощью "cin>>", как применить в главной функции и перевести из числового в символьное представление это самое "n";

Пока что так и не укладывается в уме - как это все сделать
Stranger777
4 / 8 / 0
Регистрация: 08.02.2013
Сообщений: 47
03.04.2013, 01:23     C++. Запись матем. выражений в переменную #9
quale33,
http://msdn.microsoft.com/ru-ru/libr...mprovider.aspx - класс .NetFramework, дающий возможность генерации кода языков .NET из строки.

Добавлено через 10 минут

Не по теме:

И в следующий раз не мучайтесь вот так:

C++
1
double a = 0,b = 0,h = 0,x,S = 0;
, эта запись и
C++
1
double a = b = h = S = 0;
эквивалентны.

Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
03.04.2013, 11:23     C++. Запись матем. выражений в переменную #10
Причем здесь .Net?
А этот код
C++
1
double a = b = h = S = 0;
не эквивалентен предыдущему и не скомпилируется.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2013, 13:35     C++. Запись матем. выражений в переменную
Еще ссылки по теме:

C++ Ввод пустой строки и ее запись в переменную
C++ Запись данных в переменную из текстового файла
Запись из файла в переменную C++

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

Или воспользуйтесь поиском по форуму:
Stranger777
03.04.2013, 13:35     C++. Запись матем. выражений в переменную
  #11

Не по теме:

Цитата Сообщение от Герц Посмотреть сообщение
Причем здесь .Net?
А этот код
C++
1
double a = b = h = S = 0;
не эквивалентен предыдущему и не скомпилируется.
Первый - странный вопрос. .Net - платформа для программирования, хотите - пользуетесь, не хотите - не пользуетесь. Хотя конечно даже если организовать такую конвертацию - вся сложность ввода переложится на пользователя. А в остальном Ваша правда, мда... помнится, читал это у Дейтелов, либо так печально сказывается яваскрипт. Скорее всего второе. Переключаюсь в режим молчаливого чтения и витывания, дабы более не советовать чепуху.

Yandex
Объявления
03.04.2013, 13:35     C++. Запись матем. выражений в переменную
Ответ Создать тему
Опции темы

Текущее время: 01:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru