-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCalculator.h
78 lines (68 loc) · 1.63 KB
/
Calculator.h
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
#ifndef CALCULATOR_INCLUDED
#define CALCULATOR_INCLUDED
#define ARRAY_SIZE 10
#include <string>
using namespace std;
class Calculator {
private:
string equation;
string equationArray[ARRAY_SIZE];
void trimEquation() {
string returnedStr = "";
for(int i=0; i<equation.size(); i++) {
if(equation[i] != ' ') {
returnedStr += equation[i];
}
}
equation = returnedStr;
}
void splitEquation() {
int arrayIndex = 0;
for(int i=0; i<equation.size(); i++) {
if(equation[i] == '+' || equation[i] == '-' || equation[i] == '*' || equation[i] == '/') {
equationArray[++arrayIndex] += equation[i];
arrayIndex++;
} else {
equationArray[arrayIndex] += equation[i];
}
}
}
public:
Calculator(string equation) {
this->equation = equation;
this->trimEquation();
this->splitEquation();
}
double evaluate() {
double total = 0;
for(int i=0; i<ARRAY_SIZE; i++) {
if(equationArray[i] == "+") {
if(i == 1) {
total += stoi(equationArray[i-1]) + stoi(equationArray[i+1]);
} else {
total += stoi(equationArray[i+1]);
}
} else if(equationArray[i] == "-") {
if(i == 1) {
total -= stoi(equationArray[i-1]) - stoi(equationArray[i+1]);
} else {
total -= stoi(equationArray[i-1]);
}
} else if(equationArray[i] == "*") {
if(i == 1) {
total += stoi(equationArray[i-1]) * stoi(equationArray[i+1]);
} else {
total *= stoi(equationArray[i+1]);
}
} else if(equationArray[i] == "/") {
if(i == 1) {
total += stoi(equationArray[i-1]) / stoi(equationArray[i+1]);
} else {
total /= stoi(equationArray[i+1]);
}
}
}
return total;
}
};
#endif