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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Vhodnoylogin
-13 / 2 / 0
Регистрация: 02.04.2012
Сообщений: 295
#1

Написать парсер математических выражений с функцией упрощения этих выражений - C++

29.08.2016, 08:27. Просмотров 686. Ответов 27
Метки нет (Все метки)

Люди, здравствуйте.

Есть такая задача: написать упроститель выражений. На вход подается строка вида "a*b+a*c", являющаяся корректным математическим выражением. Надо упростить его.

Как решить, объяснять не буду. Однако, все же будет предпочтительнее, чтобы вы реализовывали через классы (каждая операция - это класс, наполненный своими методами).


В чем суть: суть в том, чтобы посмотреть, как вы решите одну проблему. Какую? Если вы читали мои предыдущие темы - то вы может даже и знаете, в чем проблема.

PS: дурацкое правило не писать в заголовке определенные слова.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2016, 08:27     Написать парсер математических выражений с функцией упрощения этих выражений
Посмотрите здесь:
C++ Парсер математических выражений
Парсер математических выражений на С/С++ C++
C++ Парсер для математических выражений
Парсер математических выражений - можно ли оптимизировать и улучшить код C++
Парсер математических выражений на с++ визуал студио 2013 в windows forms перевести в обратную пз C++
Вычисления математических выражений C++
Вычисление математических выражений C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
tezaurismosis
Администратор
Эксперт .NET
6807 / 3177 / 490
Регистрация: 17.04.2012
Сообщений: 7,867
Записей в блоге: 14
29.08.2016, 14:51     Написать парсер математических выражений с функцией упрощения этих выражений #16
Vhodnoylogin, правило 4.7 видели?
4.7. Как можно более полно описывайте суть проблемы или вопроса, что было сделано для ее решения и какие результаты получены.
Хотя бы нормально опишите задачу. Психологические эксперименты очень занимательны, но, боюсь, им здесь не место.
HelicopterK52
659 / 202 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
29.08.2016, 14:51     Написать парсер математических выражений с функцией упрощения этих выражений #17
Цитата Сообщение от Vhodnoylogin Посмотреть сообщение
А мне хочется посмотреть
Да с чего люди будут что-то показывать? Это же не их проблемы.
Цитата Сообщение от Vhodnoylogin Посмотреть сообщение
И хочу, чтобы другие тоже на граблях потанцевали.
Возьмите детские грабли и еще раз потанцуйте.
Цитата Сообщение от Vhodnoylogin Посмотреть сообщение
как вы будете решать проблему множественной диспетчеризации.
Множественной? То есть, зашли дальше двойной диспетчеризации?
Тогда не надо выкладывать свой код - там лапша будет.
Vhodnoylogin
-13 / 2 / 0
Регистрация: 02.04.2012
Сообщений: 295
29.08.2016, 14:55  [ТС]     Написать парсер математических выражений с функцией упрощения этих выражений #18
Цитата Сообщение от Martein Посмотреть сообщение
В конце не надо хоть будет нести зачётку для отметки твоему преподу, который тебе задал это задание?
не надо. Ибо мы год назад (прошлой зимой) эту задачу решали вместе. Так что он все сам видел. И оценку сам же и ставил.

Добавлено через 34 секунды
Ну, я погляжу, народ тут боится множественной диспетчеризации. Поэтому и делать не хочет.
_Ivana
3041 / 1728 / 150
Регистрация: 01.03.2013
Сообщений: 4,906
Записей в блоге: 2
29.08.2016, 14:56     Написать парсер математических выражений с функцией упрощения этих выражений #19
Народ тут предлагал ТС написать показательные примеры, но тот не реагирует Потому что тролль
obivan
Падаван С++
399 / 219 / 57
Регистрация: 11.11.2014
Сообщений: 764
Завершенные тесты: 2
29.08.2016, 14:58     Написать парсер математических выражений с функцией упрощения этих выражений #20
Vhodnoylogin,
Цитата Сообщение от Vhodnoylogin Посмотреть сообщение
народ тут боится множественной диспетчеризации
вы действительно думаете, что в этом проблема того, что вам никто ничего на блюдечке не несет, у меня для вас плохие новости, вы явно в людях не разбираетесь, собственно тема не о чем, если чего то хотите скидывайте свой код минимум
HelicopterK52
659 / 202 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
29.08.2016, 15:03     Написать парсер математических выражений с функцией упрощения этих выражений #21
Цитата Сообщение от Vhodnoylogin Посмотреть сообщение
я погляжу, народ тут боится множественной диспетчеризации.
Канешн. Зачем нам этот монстр сдался?
Avazart
Эксперт С++
7119 / 5296 / 273
Регистрация: 10.12.2010
Сообщений: 23,417
Записей в блоге: 17
29.08.2016, 15:05     Написать парсер математических выражений с функцией упрощения этих выражений #22
Цитата Сообщение от _Ivana Посмотреть сообщение
Крайний срок - полночь! (С)
Ага а затем- в тыкву ...
Vhodnoylogin
-13 / 2 / 0
Регистрация: 02.04.2012
Сообщений: 295
29.08.2016, 15:09  [ТС]     Написать парсер математических выражений с функцией упрощения этих выражений #23
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
Зачем нам этот монстр сдался?
вот я и хочу посмотреть, как люди без этого монстра живут.

Если есть конструкция вида function(arg1, agr2), реализация которой зависит от типа аргументов - без множественной диспетчеризации не обойтись. Либо городить огород для реализации (а будет ли она такой же универсальной) своего варианта.
Nishen
342 / 180 / 68
Регистрация: 26.02.2015
Сообщений: 892
29.08.2016, 15:11     Написать парсер математических выражений с функцией упрощения этих выражений #24
Vhodnoylogin, обратись к http://www.cyberforum.ru/members/521431.html он поможет тебе.
_Ivana
3041 / 1728 / 150
Регистрация: 01.03.2013
Сообщений: 4,906
Записей в блоге: 2
29.08.2016, 15:14     Написать парсер математических выражений с функцией упрощения этих выражений #25
Точно, ведь абстрактное синтаксическое дерево математического выражения является частным случаем "древовидной иерархии объектов с паритетными связями" (R)
Avazart
29.08.2016, 15:21
  #26

Не по теме:

Цитата Сообщение от Hikari Посмотреть сообщение
Задействовать в твоей программе VBS или JS и через него вычислять выражение.
По крайней мере мои коллеги так делают. А иногда с помошью MS Office или Libre Office.
А в учебных целях есть книги Страуструпа в которых описан калькулятор

Martein
Оператор ЭВМ 6 разряда
673 / 84 / 13
Регистрация: 22.06.2014
Сообщений: 174
29.08.2016, 16:02     Написать парсер математических выражений с функцией упрощения этих выражений #27
Короче парняга пыжытся над упражнениями по парсингу уравнений и их решение через паттерн диспетчер и хочет чтобы вы вместо него написали программу с классами подобного типа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
 
class Expression {
public:
    virtual Expression& operation() = 0;
    virtual void transform(Expression& other) = 0;
};
 
class Number : public Expression {
public:
    Expression &operation();
    void transform(Expression &other) {
        if (Number* number = dynamic_cast<Number*>(other)) {
            // operation Number-Number
        } else {
            
        }
    }
};
 
class Div : public Expression {
public:
    /*virtual*/
    Expression &operation();
    /*virtual*/
    void transform(Expression &other) {
        if (Div* div = dynamic_cast<Div*>(other)) {
            // operation Div-Div
        } else {
            
        }
    }
};
 
class Mul : public Expression {
public:
    /*virtual*/
    Expression &operation();
    /*virtual*/
    void transform(Expression &other) {
        if (Mul* mul = dynamic_cast<Mul*>(other)) {
            // operation Mul-Mul
        } else {
            
        }
    }
};
 
int main()
{
    return 0;
}
И теперь похвастаться не перед кем, что он такой осилятор, так хочет посмотреть, как умеют другие. Короче это юношеский максимализм, не обращайте внимания.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2016, 16:17     Написать парсер математических выражений с функцией упрощения этих выражений
Еще ссылки по теме:
Разбор математических выражений C++
C++ Программирование математических выражений в C++
C++ Анализатор математических выражений
Сравнение результатов двух математических выражений. C++
Вычисление значений математических выражений с рациональными числами C++

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

Или воспользуйтесь поиском по форуму:
gru74ik
29.08.2016, 16:17     Написать парсер математических выражений с функцией упрощения этих выражений
  #28
 Комментарий модератора 
Множественные нарушения правил форума (4.3, 4.7, 4.10, 5.22).
Упорство в несоблюдении правила 4.7. Тема закрыта.
Yandex
Объявления
29.08.2016, 16:17     Написать парсер математических выражений с функцией упрощения этих выражений
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru