⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 重载+.cpp

📁 巨型整数类
💻 CPP
字号:
#include"head.h"

//-----------------------巨型整数+巨型整数------------------------//
HugeInt operator+(const HugeInt &a,const HugeInt &b){ //巨型整数a+巨型整数b   结果保存在a中
	HugeInt h,h1,h2;
	h1=a; h2=b;
	int i,flag=0;

	if(h1>=h && h2<=h){   //当a>=0 , b<=0 的情况
		 h2=-h2;
		return h=(h1-h2);
	}
	if(h1<h && h2>h){    //当a<0,b>0 的情况
		h1=-h1;
		return h=h2-h1;
	}
	if(h1<h && h2<h){   //当a<0,b<0的情况
		flag=1;
		h1=-h1; h2=-h2;
	}
	//-----------------------默认a,b都>=0执行下列程序-----------------------//
	for( i=1; i<=h2.huge_t[0] ; ++i){
		h1.huge_t[i]+=h2.huge_t[i];
		if(h1.huge_t[i]>=Depth){
			h1.huge_t[i]-=Depth; //对应两个数相加,如果超过进制数就向前进一位
			h1.huge_t[i+1]++;
		}
	}
		if(h2.huge_t[0]>=h1.huge_t[0]){
		
			if( h1.huge_t[ h2.huge_t[0]+1 ]>0 )
			h2.huge_t[0]++; //整数b的进制位数比a位数大,把b的进制位数赋给a
			h1.huge_t[0]=h2.huge_t[0];
		}
		else 
			for(; h1.huge_t[i]>=Depth && i<h1.huge_t[0] ; ){  //当a的进制位数比b大
				
				h1.huge_t[i]-=Depth; 
				i++;
				h1.huge_t[i]++;
				if(h1.huge_t[ h1.huge_t[0] ]>=Depth){  //最高位超过进制数
					h1.huge_t[h1.huge_t[0] ]-=Depth;
						h1.huge_t[0]++;    //位数加一
						h1.huge_t[ h1.huge_t[0] ]++;
						break;
				}
			}

			if(flag==1) return -h1;   //如果a,b都是复数,先置成整数,计算后结果要取负
			return h1;
}

//--------------------巨型整数加长整型数--------------------------//
HugeInt operator+(const HugeInt &h,const long &n){
	HugeInt h1,h2;
	h1.long_to_huge(n,h1);
	return h2=h1+h;
}

//-------------------巨型整数+字符串--------------------------//
HugeInt operator+(const HugeInt &h,const char *buf){
	HugeInt h1,h2;
    char str[MAX*Digit + 1];
	strcpy(str,buf);
	h1.str_to_huge(str,h1);  //字符串转化成巨型整数
	return h2=h+h1;
}

//-------------------字符串+巨型整数--------------------------//
HugeInt operator+(const char *buf,const HugeInt &h){
	HugeInt h1,h2;
	char str[MAX*Digit + 1];
	strcpy(str,buf);
	h1.str_to_huge(str,h1);  //字符串转化成巨型整数
	return h2=h+h1;
}

//-----------------长整型+巨型整数----------------------------//
HugeInt operator+(const long &n,const HugeInt &h){
	HugeInt h1,h2;
	h1.long_to_huge(n,h1);
	return h2=h1+h;
}


//-----------------前置运算 ++HugeInt-----------------------//
HugeInt HugeInt::operator++(){
	HugeInt result;
	result=*this+1L;
	return (*this=result);
}

//---------------后置运算  HugeInt++ -----------------------//
HugeInt HugeInt::operator++(int nosue){
	HugeInt temp=*this;
	HugeInt result;
	result=*this+1L;
	*this=result;
	return temp;
}

HugeInt HugeInt::operator+=(const HugeInt &h){  

	*this=*this+h;
	return *this;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -