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

📄 zxz.txt

📁 数据结构课程设计_任意大数的加减乘运算器
💻 TXT
字号:
void Muilt(HugeNum* Num1,HugeNum* Num2,HugeNum* Num3)//
{
	int IsDot=0,i,I=0;
	HugeNum NUM[10],Temp[2];
	BiteNode *p,*pt;
	for(i=0;i<2;i++)
		InitNum(&Temp[i]);
	if(Num1->NP*Num2->NP==-1)
		Num3->NP=-1;//
	Num1->NP=Num2->NP=1;//
	for(p=Num2->Lowest;p!=NULL;p=p->prebite)
	{
		for(i=0;i<10;i++)
			InitNum(&NUM[i]);
		for(i=1;i<=p->bite;i++)
			Plus_or_Minu(Num1,&NUM[i],&NUM[i+1],'+');
		if(IsDot==0)
			{
				Plus_or_Minu(&NUM[i],&Temp[I],&Temp[(I+1)%2],'+');						ReInit(&Temp[I]);I=(I+1)%2;
				if(p!=Num2->Dot)  Transbite(&Temp[I],'u');//
			}//if
		else	{
				Transbite(&NUM[i],'d');
				Plus_or_Minu(&NUM[i],&Temp[I],&Temp[(I+1)%2],'+');
				ReInit(&Temp[I]);I=(I+1)%2;
			}
		if(p==Num2->Dot)
			IsDot=1;
	}//for
	for(p=Temp[I].Highest;p!=NULL;p=p->nextbite)
	{
		pt=(BiteNode*)malloc(sizeof(BiteNode));
		pt->bite=p->bite;
		if(Num3->Highest==NULL)
			Num3->Highest=pt;
		if(p==Temp[I].Dot)
			Num3->Dot=pt;
		pt->prebite=Num3->Lowest;
		pt->nextbite=NULL;
		if(Num3->Lowest!=NULL)
			Num3->Lowest->nextbite=pt;
		Num3->Lowest=pt;
	}
}
/*******************************************************************************************/
void Transbite(HugeNum* temp,char c)
{
	BiteNode *pt;
	switch(c)
		{
			case 'u'://	{
						if(temp->Dot->prebite==NULL)//
						{
							pt=(BiteNode*)malloc(sizeof(BiteNode));
							pt->bite=0;
							pt->nextbite=temp->Highest;
							temp->Highest->prebite=pt;
							temp->Dot=pt;
						}
						else//
							temp->Dot=temp->Dot->prebite;
						break;
					}
			case 'd'://	{
						if(temp->Dot->nextbite==NULL)//
						{
							pt=(BiteNode*)malloc(sizeof(BiteNode));
							pt->bite=0;
							pt->prebite=temp->Lowest;
							temp->Lowest->nextbite=pt;
							temp->Dot=pt;
						}
						else//
							temp->Dot=temp->Dot->nextbite;
						
						break;
					}
		}
}//
/***********************************************************************************/
void ReInit(HugeNum* num)//
{
	BiteNode* p;
	p=num->Highest;
	while(p)
	{
		pt=p;
		p=p->nextbite;
		free(pt);
	}
	num->Dot=num->Highest=num->Lowest=NULL;
	num->NP=1;
}//

⌨️ 快捷键说明

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