-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCalculator.h
38 lines (32 loc) · 970 Bytes
/
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
#pragma once
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cmath>
constexpr size_t MAX_STRING = 1024;
constexpr size_t NUMVARS = 32;
constexpr size_t LENGTH_TOKEN = 256;
enum class types { UNKNOWN, DELIMITER, NUMBER };
class Calculator
{
char* expr_ptr = nullptr;
char token[LENGTH_TOKEN] = { 0 }; // current token
char token_type = { 0 };
char* store_ptr = nullptr;
double variables[NUMVARS] = { 0 }; // variables values
void insert_parenthesises(const char* s);
void evaluate_expr2(double& result);
void evaluate_expr3(double& result);
void evaluate_expr4(double& result);
void evaluate_expr5(double& result);
void evaluate_expr6(double& result);
void get_token();
public:
Calculator() = default;
Calculator(Calculator const&) = delete;
Calculator& operator = (Calculator const&) = delete;
Calculator(Calculator&&) = delete;
Calculator& operator = (Calculator&&) = delete;
~Calculator();
double calc(const char* str);
};