📄 bignumclass.h
字号:
#define MAX 100
struct strArray
{
int nCharInt;
char cChar;
int nArray[MAX];//nArray[0]用来标记整数的位数,nArray[MAX-1]标记小数的位数
//1-->MAX*2/3放整数,MAX*2/3+1-->MAX-2放小数
struct strArray *next;
struct strArray *before;
} ;
class BignumClass
{
public:
BignumClass( char *Char);//构造函数
BignumClass();//构造函数
~BignumClass();//析构函数
public:
struct strArray *head, *temp, *pnew;//定义结构体的一个头结点,一个中间变动的结点,一个用以申请的临时结点
void translate_char(); //把要处理的字符串转化为结构体
void slove();//求值函数
void redressal(int arr1[]);//调整数组,使每位上数字不大于10
void arrayToZero(int narr[]);
void getDigit(int narr[]);//得到长整数的整数和小数位数
int minimal(int a,int b){return a<b?a:b;}
int maximal(int a,int b){return a>b?a:b;}
int zero(int arrdividend[]);//被除数是否为0了
void copy(int keep[],int end[]);//把end copy 给keep
private:
char str[100];//存要处理的字符串;
void common_divisor(struct strArray *first);//求最大公约数
void common_multiple(struct strArray *first);//求最小公倍数
void deleteNode(struct strArray *first,struct strArray *second);//删除结点
void power(int arr[],long b);//计算arr^b;
long arrToLong(int arr[]);//把arr化为long
void permutation(int narr[],int m);//p(n,m)求排列
void copyNode(struct strArray *keep,struct strArray *tmp);//结点拷贝tmp的内容给keep
void arrMul(int arrfir[],int arrsec[]);//两处数组相乘
void arrDiv(int arrfir[],int arrsec[]);//两处数组相除
};
class ArrayClass
{
friend ArrayClass operator + ( ArrayClass &, ArrayClass & ); //数组相加
friend ArrayClass operator - ( ArrayClass &, ArrayClass & );//数组相减
friend ArrayClass operator * ( ArrayClass &, ArrayClass & ); //数组相乘
friend ArrayClass operator / ( ArrayClass &, ArrayClass & ); //数组相除
friend int operator % ( ArrayClass &, ArrayClass & ); //数组是否有整除关系
public:
ArrayClass( int *array);//构造函数
ArrayClass();
//~ArrayClass();//析构函数
public:
ArrayClass operator = ( ArrayClass &arr1); //赋值
int compare(int arrdividend[],int tmparr[]);//比较是否商过大了
int arr[MAX];
private:
void decimalDispose(int arrlong[],int arrshort[]);//由于乘法时小数位过多不行就合理的舍弃几位
void move(int arrdividend[],int arrdivisor[]);//根据除数移位
void numMul(int nquotient ,int arrdivisor[],int nhead_dividend);//商乘以除数
int tmparr[MAX];//一个放商和除数所乘得到的数组
void numSub(int arrdividend[],int tmparr[],int nfirst,int nlong);//计算和处理余数,nfirst是要减的首位下标,nlong是商的位数
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -