-
Notifications
You must be signed in to change notification settings - Fork 0
/
demo.cpp
127 lines (122 loc) · 3.39 KB
/
demo.cpp
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
#include "arbitrary_bignum.h"
#include <cstdlib>
#include <iostream>
#include <string>
int main() {
std::cout << "Calculator application thingy" << std::endl;
// MENU
// Add
//
// Subtract
//
// Multiply
//
// Divide
//
// Modulo
//
// Power
//
// Factorial
std::string buff;
bool running = true;
while(running) {
std::cout << "Menu:\n1) Add\n2) Subtract\n3) Multiply\n4) Divide\n5) Modulo\n6) Power\n7) Factorial\n8) Quit" << std::endl;
std::getline(std::cin,buff);
int option = std::atoi(buff.c_str());
if(option >= 8) {
break;
}
switch(option) {
case 1: {
std::cout << "Input First Number: ";
std::getline(std::cin, buff);
auto result = std::atoll(buff.c_str());
ArbitraryBigNum first = result;
std::cout << "Input Second Number: ";
std::getline(std::cin, buff);
result = std::atoll(buff.c_str());
ArbitraryBigNum second = result;
std::cout << first << " + " << second << " = " << (first+second) << std::endl;
break;
}
case 2: {
std::cout << "Input First Number: ";
std::getline(std::cin, buff);
auto result = std::atoll(buff.c_str());
ArbitraryBigNum first = result;
std::cout << "Input Second Number: ";
std::getline(std::cin, buff);
result = std::atoll(buff.c_str());
ArbitraryBigNum second = result;
std::cout << first << " - " << second << " = " << (first-second) << std::endl;
break;
}
case 3: {
std::cout << "Input First Number: ";
std::getline(std::cin, buff);
auto result = std::atoll(buff.c_str());
ArbitraryBigNum first = result;
std::cout << "Input Second Number: ";
std::getline(std::cin, buff);
result = std::atoll(buff.c_str());
ArbitraryBigNum second = result;
std::cout << first << " * " << second << " = " << (first*second) << std::endl;
break;
}
case 4: {
std::cout << "Input First Number: ";
std::getline(std::cin, buff);
auto result = std::atoll(buff.c_str());
ArbitraryBigNum first = result;
std::cout << "Input Second Number: ";
std::getline(std::cin, buff);
result = std::atoll(buff.c_str());
ArbitraryBigNum second = result;
std::cout << first << " / " << second << " = " << (first/second) << std::endl;
break;
}
case 5: {
std::cout << "Input First Number: ";
std::getline(std::cin, buff);
auto result = std::atoll(buff.c_str());
ArbitraryBigNum first = result;
std::cout << "Input Second Number: ";
std::getline(std::cin, buff);
result = std::atoll(buff.c_str());
ArbitraryBigNum second = result;
std::cout << first << " % " << second << " = " << (first%second) << std::endl;
break;
}
case 6: {
std::cout << "Input First Number: ";
std::getline(std::cin, buff);
auto result = std::atoll(buff.c_str());
ArbitraryBigNum first = result;
std::cout << "Input Second Number: ";
std::getline(std::cin, buff);
std::size_t second = std::atoll(buff.c_str());
std::cout << first << " ^ " << second << " = " << pow(first, second) << std::endl;
break;
}
case 7: {
std::cout << "Input number: ";
std::getline(std::cin, buff);
std::uint32_t value = std::atoi(buff.c_str());
ArbitraryBigNum res = value;
std::cout << value <<"! = ";
value--;
while(value > 0) {
res *= value;
value--;
}
std::cout << res << std::endl;
break;
}
default:
running = false;
break;
}
}
return 0;
}