-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBigInteger.h
More file actions
176 lines (173 loc) · 6.16 KB
/
BigInteger.h
File metadata and controls
176 lines (173 loc) · 6.16 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
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
174
175
176
//
// Created by Donghui Zheng on 2020/12/22 14:58.
//
#ifndef OPERATION_OF_LARGE_INTEGERS_BIGINTEGER_H
#define OPERATION_OF_LARGE_INTEGERS_BIGINTEGER_H
#include <iostream>
#include <string>
#include <fstream>
#include "LinkList.h"
#include "Node.h"
using namespace std;
//大整数类.
class bigInteger {
public:
/**
* @details 将大整数(链表)转换为字符串.
* @param list.
* @return string:返回一个字符串.
*/
static string translateToString(linkList &list);
/**
* @details 将数据写入文件.
* @param data:待写入的数据.
* @param url:文件路径.
* @return void.
*/
static void writeFile(const string& data, const string& url);
/**
* @details 大整数大小比较.
* @param list1:链表1.
* @param list2:链表2.
* @return int:返回1代表list1>list2,-1代表list1<list2,0代表list1=list2.
*/
static int comparisonOfSize(linkList &list1, linkList &list2);
/**
* @details 链表长度比较.
* @param list1:链表1.
* @param list2:链表2.
* @return bool:若链表1大于链表2,返回true,反之返回false.
*/
static bool compareListLength(linkList &list1, linkList &list2);
/**
* @details 不涉及文件的输入函数,将操作数存入链表.
* @param object1:用于存储大整数1.
* @param object2:用于存储大整数2.
* @return void.
*/
static void inputListWithoutFile(linkList &object1, linkList &object2);
/**
* @details 涉及文件的操作函数,十进制.
* @param object1:用于存储大整数1.
* @param object2:用于存储大整数2.
* @param choice:运算种类.
* @return void.
*/
static void listOperateWithFile_decimalSystem(linkList &object1, linkList &object2, char choice);
/**
* @details 涉及文件的操作函数,二进制.
* @param object1:用于存储大整数1.
* @param object2:用于存储大整数2.
* @param choice:运算种类.
*/
static void listOperateWithFile_binarySystem(linkList &object1, linkList &object2, char choice);
/**
* @details 加法辅助函数.
* @param object1:操作数1,即大整数1.
* @param object2:操作数2,即大整数2.
* @param base:进制.
* @return linkList.
*/
static linkList additionAuxiliaryFunction(linkList &object1, linkList &object2, int base);
/**
* @details 减法辅助函数.
* @param object1:操作数1,即大整数1.
* @param object2:操作数2,即大整数2.
* @param base:进制.
* @return linkList.
*/
static linkList subtractionAuxiliaryFunction(linkList &object1, linkList &object2, int base);
/**
* @details 乘法辅助函数.
* @param object1:操作数1,即大整数1.
* @param object2:操作数2,即大整数2.
* @param base:进制.
* @return linkList.
*/
static linkList multiplicationAuxiliaryFunction(linkList &object1, linkList &object2, int base);
/**
* @details 乘法子函数.
* @param operator1:操作数1.
* @param operator2:操作数2.
* @param base:进制.
* @return linkList.
*/
static linkList divisionFunction(linkList &operator1, linkList &operator2, int base);
/**
* @details 除法辅助函数.
* @param object1:操作数1,即大整数1.
* @param object2:操作数2,即大整数2.
* @param base:进制.
* @return linkList.
*/
static linkList divisionAuxiliaryFunction(linkList &object1, linkList &object2, int base);
/**
* @details 十进制加法函数,可正可负.
* @param operation1:操作数1,即大整数1.
* @param operation2:操作数2,即大整数2.
* @param base:进制.
* @return void.
*/
static void addition_bigInteger(linkList &operation1, linkList &operation2, int base);
/**
* @details 二进制加法函数.
* @param object1:操作数1,即大整数1.
* @param object2:操作数2,即大整数2.
* @return void.
*/
static void addition_bigInteger_binarySystem(linkList &object1, linkList &object2);
/**
* @details 十进制减法函数,可正可负.
* @param operation1:操作数1,即大整数1.
* @param operation2:操作数2,即大整数2.
* @param base:进制.
* @return void.
*/
static void subtraction_bigInteger(linkList &operation1, linkList &operation2, int base);
/**
* @details 二进制减法函数.
* @param object1:操作数1,即大整数1.
* @param object2:操作数2,即大整数2.
* @return void.
*/
static void subtraction_bigInteger_binarySystem(linkList &object1, linkList &object2);
/**
* @details 十进制乘法函数,可正可负.
* @param operation1:操作数1,即大整数1.
* @param operation2:操作数2,即大整数2.
* @param base:进制.
* @return void.
*/
static void multiplication_bigInteger(linkList &operation1, linkList &operation2, int base);
/**
* @details 二进制乘法函数.
* @param object1:操作数1,即大整数1.
* @param object2:操作数2,即大整数2.
* @return void.
*/
static void multiplication_bigInteger_binarySystem(linkList &object1, linkList &object2);
/**
* @details 十进制除法函数,可正可负.
* @param operation1:操作数1,即大整数1.
* @param operation2:操作数2,即大整数2.
* @param base:进制.
* @return void.
*/
static void division_bigInteger(linkList &operation1, linkList &operation2, int base);
/**
* @details 二进制除法函数.
* @param object1:操作数1,即大整数1.
* @param object2:操作数2,即大整数2.
* @return void.
*/
static void division_bigInteger_binarySystem(linkList &object1, linkList &object2);
/**
* @details 十、二进制指数运算函数.
* @param operation1:操作数1,即大整数1.
* @param operation2:操作数2,即大整数2.
* @param base:进制.
* @return void.
*/
static void exponentialCalculation_bigInteger(linkList &operation1, linkList &operation2, int base);
};
#endif //Operation_OF_LARGE_INTEGERS_BIGINTEGER_H