Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/47: Рейтинг темы: голосов - 47, средняя оценка - 4.77
5 / 5 / 5
Регистрация: 15.05.2012
Сообщений: 66
1

Преобразование строки в математическую формулу

25.04.2018, 14:04. Показов 9664. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
День добрый.
Имеем строку, например - "(30+X)-10*lg(100)".
Если было бы без математических формул, то я бы наверное преобразовал строку в массив строк, а потом приводил к типу double, и производил простые(+,-,*,/) математические операции. Но нужны так же ещё и математические функции типа lg, cos(cmath). Строка берётся из потока(ifstream,iostream).

Есть идеи как преобразовать её в математическую формулу?

Добавлено через 17 минут
походу надо запариться с синтаксическим разбором строки всё таки
обычно делается так: считывается символ, по нему решается, какой тип выражения идёт дальше. Если может быть несколько вариантов, то последующие символы считываются и запоминаются до тех пор, пока не будет точно ясно, что вариант единственный. В данном случае:
1. скобки "(" считаем, что могут встретиться варианты 1,2,3,4
2. закрывающаяся скобка ")" выходим из скобки
3. число "+", "-" заталкиваем считанный символ обратно в поток и читаем поток как число, далее возможны только варианты 2,5
4. число "0"-"9" заталкиваем считанный символ обратно в поток и читаем поток как число, далее возможны только варианты 2,5
5. операции "+", "-", "*", "/ " запоминаем операцию, после этого читаем число, далее вариант 4

в начале выражения возможны варианты 1,3,4

Чтобы правильно вычислить выражение, его лучше преобразовать в так называемую польскую запись. Если вычислять выражение во время разбора с учётом приоритетов операций во время разбора, польская запись получится сама собой (даже не придётся над ней думать). При этом типичный прототип функции писать в виде double operation(istream&), например
Ну, я пошёл)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2018, 14:04
Ответы с готовыми решениями:

Преобразование строки в формулу на с++
Помогите пожалуйста с решением лабораторной, суть в том что на вход функции с++ подается массив...

Преобразование строки в формулу
Ребят, скажите пожалуйста, есть ли в С++ функция, переводящая строку с формулой в формулу? И если...

Написать математическую формулу
Помогите написать математическую формулу в c++

Вычислить математическую формулу
При написании кода программы столкнулся с проблемой. Программа выводит неправильное число. Скорее...

1
585 / 488 / 371
Регистрация: 05.11.2013
Сообщений: 1,265
Записей в блоге: 6
25.04.2018, 17:12 2
Лучший ответ Сообщение было отмечено kLeimor как решение

Решение

идея тут одна - парсить строку.
парсеров на C/C++ с открытым кодом полно, вот, например
1
25.04.2018, 17:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2018, 17:12
Помогаю со студенческими работами здесь

Перевести математическую формулу в С++
Ребят помогите.... очень нужно. Всю программу написал, а вот формулу одну не могу вывести ...

Записать математическую формулу
Доброго времени суток. Помогите записать формулу: заранее спасибо)))

Записать математическую формулу на языке C++
Доброго времени суток. Помогите записать формулу zzz=\frac{{e}^{\frac{3}{x}}*\pi x-lg...

Записать математическую формулу на языке C++
Доброго времени суток. Помогите записать формулу. Заранее благодарю!


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

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