-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHeader.h
More file actions
123 lines (113 loc) · 3.13 KB
/
Header.h
File metadata and controls
123 lines (113 loc) · 3.13 KB
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
#pragma once
#include <iostream>
#include <iostream>
#include <conio.h>
#include <fstream>
using namespace std;
enum type {
digitS, plusS, minusS, divideS, multiplicationS, negationS, minusDigitS, moduloS, greatherEqualThenS,
greatherThenS, lessEqualThenS, lessThenS, equalS, notEqualS, andS, orS, isEqualS, leftBracketS, rightBracketS, fobbidenS, variableS, nullValueS, minusVarS
};
struct symbol
{
type _type;
int value;
int strenght;
int index;
bool isNull;
};
struct var
{
char* name;
int value;
bool isNull;
bool isInitalized;
};
class stack
{
public:
stack();
~stack();
void push(symbol newObject);
symbol top();
int size();
void pop();
bool empty();
protected:
void resize(int newSize);
int currentUse;
int memory;
int topPosition;
symbol* tab;
};
class queue
{
public:
queue();
~queue();
void push(symbol newObject);
symbol front();
int size();
void pop();
bool empty();
protected:
void resize(int newSize);
int currentUse;
int memory;
int first;
int last;
symbol* tab;
};
class VarVector
{
public:
VarVector();
void InitalizeHashTable();
~VarVector();
void push_back(var newObject);
void addToHashTable(int index);
int size();
void pop();
bool empty();
void clear();
var &at(int index);
int isInitalizedVariable(char* nameToFind);
protected:
int** hashTable;
void resize(int newSize);
int currentUse;
int memory;
int topPosition;
var* tab;
};
bool isMinusVar(symbol lastSymbol, char* input);
symbol createMinusVarSymbol();
void showResult(VarVector* variablesContainer, int numberOfOperation);
symbol resultOfEquation(queue* data, stack* operatorStack, VarVector* resultVar, VarVector* variablesContainer, int* operationCount, int maxOperation);
int nextSymbolShift(char* tab, int nsymbol);
bool isMinusDigit(char* tab, symbol lastSymbol);
char nextSymbol(char* tab, int nsymbol);
bool isVarLetter(char letter);
symbol createEmptyVariable();
//bool isInitalizedVariable(char* name, VarVector* container);
symbol createSymbol(char* _symbol);
bool isOperator(char* symbol);
bool isOperatorSymbol(symbol symbol);
int getVariableID(char* name, VarVector* container);
bool isDigit(char symbol);
int chatToInt(char symbol);
bool compareStrings(char* string1, char* string2);
char* dotArray(char* table, int size);
int sizeOfArray(char* table, char symbolOfEnd);
int parseToInt(char* table, int size);
symbol createDigitFromArray(char* beginning, int* shift);
int getLinesOfOperations();
char** getVaraibles(int* amountOfVariable);
bool isVar(char string);
symbol createDigitSymbol(int number);
symbol resultOfMathEquation(symbol firstVariable, symbol operation, symbol secondVariable, VarVector* variables);
VarVector* charToVar(char** variables, int amountOfVariable);
char* createVarNameFromArray(char* beginning, int* shift);
int conditionLoop(char* input, int count, int sizeOfArray, int* currentnumberofoperation, int maxnumberofoperation, VarVector* variables);
symbol condition(char* data, int count, int sizeOfArray, int* numberOfOperation, int maxnumberofoperation, VarVector* variables, int* shift);
int loop(char* input, int count, int sizeOfArray, int* currentnumberofoperation, int maxnumberofoperation, VarVector* variables);