Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
55 / 38 / 20
Регистрация: 30.03.2012
Сообщений: 330

Разбор кода заголовочного файла МатПарсера

04.03.2015, 20:39. Показов 533. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Я с интернета скачал исходник матпарсера. Возможно многие видели его уже. Очень нужна помощь по пояснению в заголовочном файле. С реализацией попробую сам разобраться. Кому не трудно, добавьте описание в виде комментов в заголовочном файле. И заранее спасибо.

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#if !defined(__SOLVER_H)
#define __SOLVER_H
#include <ios>
#include <string.h>
 
using namespace std;
 
// Defines
#define MAX_EXPR_LEN   255
#define MAX_TOKEN_LEN  80
 
struct TCALCNode
{
    double value;
 
    TCALCNode *left;
 
    TCALCNode *right;
 
    TCALCNode(double _value=0.0, TCALCNode *_left=NULL, TCALCNode *_right=NULL)
    {
        value = _value;
        left = _left;
        right = _right; 
    }
};
 
struct TError
{
    char *error;
    int pos;
 
    TError()    {   };
 
    TError(char *_error, int _pos) 
    {
        error=_error;
        pos=_pos+1; 
    }
};
 
class TCALC
{
private:
 
    TCALCNode *root;
    char *expr;
    char curToken[MAX_TOKEN_LEN];
 
    enum {
        CALC_PLUS, CALC_MINUS, CALC_MULTIPLY, CALC_DIVIDE, CALC_PERCENT, CALC_POWER,
        CALC_SIN, CALC_COS, CALC_TG, CALC_CTG, CALC_ARCSIN, CALC_ARCCOS, CALC_ARCTG,        
        CALC_ARCCTG, CALC_SH, CALC_CH, CALC_TH, CALC_CTH, CALC_EXP, CALC_LG,            
        CALC_LN, CALC_SQRT, CALC_X, CALC_L_BRACKET, CALC_R_BRACKET, CALC_E,             
        CALC_PI, CALC_NUMBER, CALC_END, CALC_G, CALC_EXP1,CALC_LEET
         } typToken; //используемые действия, константы
 
    int pos;
    const double *x;
    double result;
 
    
 
private:
 
    TCALCNode *CreateNode(double _value=0.0, TCALCNode *_left=NULL, TCALCNode                         *_right=NULL);
 
    TCALCNode *Expr(void);
    
    TCALCNode *Expr1(void);
    
    TCALCNode *Expr2(void);
    
    TCALCNode *Expr3(void);
    
    TCALCNode *Expr4(void);
    
    TCALCNode *Expr5(void);
 
 
    bool GetToken(void);
 
    bool IsDelim(void)
 
    {
        return (strchr("+-*/%^()[]", expr[pos])!=NULL);    //разрешенные символы 
    }   
 
    bool IsLetter(void)
 
    {
        return ((expr[pos]>='a' && expr[pos]<='z') ||    
        (expr[pos]>='A' && expr[pos]<='Z'));             
    }       
 
    bool IsDigit(void) 
 
    {
        return (expr[pos]>='0' && expr[pos]<='9');       // разрешенные цифры
    } 
 
    bool IsPoint(void)
 
    { 
        return (expr[pos]=='.');                         //и точка
    }                        
 
    double CalcTree(TCALCNode *tree);
 
    void  DelTree(TCALCNode *tree);
 
    void SendError(int errNum);
 
 
public:
 
    TCALC() 
 
    { 
        result = 0.0;
        x = NULL;
        root = NULL; 
    }
    
 
 
    ~TCALC() 
 
    {
        DelTree(root);
        root=NULL; 
    }
    
    void SetX(const double *_x) 
 
    { 
        x=_x; 
    }
 
    bool Compile(char *expr);
    
    void Decompile() 
 
    { 
        DelTree(root);
        root=NULL; 
    }
 
    double Evaluate();
    
    double Evaluate(double *_x) 
 
    {
        SetX(_x);
        return Evaluate(); 
    }
    
    double Evaluate(double x, ...) 
 
    {
        SetX(&x);
        return Evaluate(); 
    }
     
    double GetResult(void) 
 
    {
        return result; 
    }
};
 
 
#endif
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.03.2015, 20:39
Ответы с готовыми решениями:

Удалена функция заголовочного файла
Уважаемые, не уверен, что проблема с самой Visual(2015), но проблема такова.. Надо поработать с файлами. Работаю через библиотеку...

Ошибки при подключении заголовочного файла
Переустановил вчера VS, создаю консольный проект как обычно, пишу #include &lt;iostream&gt; и получаю 457 ошибок...

Ресурсы на разбор исходного кода doom (id tech 1)
Здравствуйте, друзья. Мне очень-очень хотелось бы найти ресурсы, которые помогут разобрать исходный код (желательно если будет инфа по...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.03.2015, 20:39
Помогаю со студенческими работами здесь

Разбор заголовочного файла
Для чего служит указатель *pBmp ? Помогите более подробно закомментировать все строчки файла bmp.h так, чтобы эта библиотека была...

Подключение заголовочного файла, чтобы использовать функцию sayhello() из первого файла во втором
Функция sayhello() находится в файле по адресу /usr/src/linux-2.6.32.62/arch/x86/kernel/hello/ Соответственно по адресу расположены dir ...

Связь заголовочного файла и файла с описанием класса.
Всем привет! На картинке я выложил код из одной книжки, у меня возникли некоторые вопросы: - Должен ли компилироваться файл TIME1.CPP? ...

Создание заголовочного файла
хочу создать создать заголовочный файл как нам объяснили, но с почему-то выдает такую ошибку Ошибка 3 error C1010: непредвиденный...

Использование заголовочного файла
Здравствуйте. Столкнулся с проблемой, когда делал задание из книги Б.Страуструпа &quot;Программирование. Приницпы и практика использования...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru