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

📄 poly88.cpp

📁 1、 应用程序 直接可以实现多项式的各项操作。 2、 查看原代码VC++6.0打开“多项式poly88.dsp”或者用记事本打开“多项式poly88.cpp” 3、 代码简单说明:
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	 delete hb;
	 hb=qb;
	 qb=qb->next;
      break;
 case 1:
	 DelFirst(hb,qb);
	 ha->next=qb;
	 qb->next=qa;
	 qb=hb->next;
	 ha=ha->next;
     qa=ha->next;
	 break;
}//switch
  }//while
if(hb->next!=NULL)
ha->next=qb;
freeNode(hb);
return pc;
}
polynomail *  polynomail::Mulpolyn(polynomail *pb)
{
   polynomail *p11  ;
   p11=new polynomail;
   polynelem *e1;
   e1=pb->head->next;
while (e1!=NULL)
{
	p11= p11->Addpolyn(itemlist(this,e1));
    e1=e1->next;
}
 return p11;
}
polynomail* polynomail::itemlist(polynomail *p1, polynelem *e )
{
	polynomail* pd=p1->Copy();
    polynelem *e1;
    e1=pd->head;
if(e->coef==0)
{
	p1->head->next=NULL;
}
else 
   while (e1!=NULL)
   {e1->coef=e1->coef*e->coef;
   e1->expn=e1->expn+e->expn;
   e1=e1->next;
   }
return pd;
}
void polynomail::polyncreat()//OK
{   //创建有头节点多项式
	polynelem *p1,*p2;
	p1=p2=head;
    int length;
	length=0;	//输入系数
	cout<<"请输入系数,要以0结束:(只输入系数)"<<endl;
	while(1)
	{
		p1=new polynelem;
		cin>>p1->coef;
		p1->next=NULL;
		if(!p1->coef)
			break;
		p2->next=p1;
		p2=p1;
		length++;
	}	//输入指数
    	p1=head;
    cout<<endl<<"输入"<<length<<"项指数:"<<"(只输入指数)"<<endl;
	while(p1->next!=NULL)
	{
		p1=p1->next;
		cin>>p1->expn;
	}//排序并合并同类项
    p1=head->next;
	while(p1!=NULL)
	{
		polynelem *min;
		min=p1;
		p2=p1->next;
		while(p2!=NULL)
		{
			if(min->expn>p2->expn)
			{
				min=p2;
				p2=p2->next;
				continue;
			}//if
			if(min->expn==p2->expn)
			{//合并同类项
				min->coef=min->coef+p2->coef;
				polynelem *p3;
				p3=p2;
				p2=p2->next;
				polyndelete(p3);
				continue;
			}//if
			p2=p2->next;
		}//while
		if(min!=p1)
		{                 //交换数据
			float CHcoef;
			int CHexpn;
            
			CHcoef=min->coef;
			min->coef=p1->coef;
			p1->coef=CHcoef;
            CHexpn=min->expn;
			min->expn=p1->expn;
			p1->expn=CHexpn;
		}//if
		p1=p1->next;
	}//while
    //删除系数为零的项
	p1=head->next;
	while(p1!=NULL)
	{
		if(!p1->coef)
		{
			polynelem *pe;
			pe=p1;
			p1=p1->next;
			polyndelete(pe);
			continue;
		}//if
		p1=p1->next;
	}             //while
}        //polyncreat
void polynomail::printpolyn() 
{//输出已创建的多项式
	polynelem *p;
	p=head;
	while(p->next)
	{
		p=p->next;
		if(head->next==p)
		{
			if(p->expn==0)
	           cout<<p->coef;
			else 
				if(p->expn==1)
			{
				if(p->coef==1)
				   cout<<"x";
			   else
				  cout<<p->coef<<"x";
			}
			else
			{
				if(p->coef==1)
				   cout<<"x^"<<p->expn;
			   else
				  cout<<p->coef<<"x^"<<p->expn;
			}
			continue ;
		}
		if(p->coef>0)
		{
			if(p->expn==0)
               cout<<'+'<<p->coef;
			else if(p->expn==1)
			{
				if(p->coef==1)
			      cout<<'+'<<"x";
				else
			      cout<<'+'<<p->coef<<"x";
			}
			else
			{
				if(p->coef==1)
			      cout<<'+'<<"x^"<<p->expn;
				else
			      cout<<'+'<<p->coef<<"x^"<<p->expn;
			}
		}
		else if(p->coef<0)
		{
			if(p->expn==0)
				cout<<p->coef;
			else if(p->expn==1)
			{
				if(p->coef==-1)
			       cout<<"-x";
				else
				   cout<<p->coef<<"x";
			}
			else
			{
				if(p->coef==-1)
			       cout<<"-x^"<<p->expn;
				else
				   cout<<p->coef<<"x^"<<p->expn;
			}
		}
		else
		{
		}
	}         //while
	if(head->next==0)
		cout<<'0';
}          //printpolyn
void  main(int argc, char* argv[])
{	
	polynomail *C;
    polynomail A,B;
     
	double sum1;
      int option,loop1;
	 option=0;
      sum1=0; 		  
  while(loop1)
	{
		loop1=0;
sign:
	 	cout<<"<------请选择多项式的操作---->"<<endl;
		cout<<"<============MENU============>"<<endl;
		cout<<"     1、链式存储处理多项式"<<endl;
		cout<<"     2、顺序存储处理多项式"<<endl;
		cout<<"     3、退出主菜单        "<<endl;
       	cout<<"<============================>"<<endl;
	 	cout<<"请输入您的选择:(1 or 2 or 3)"<<endl;
		cin>>option;
		if(option==3)
sign1:			break;
	 	switch(option)
		{
		case 1:
      			{
					cout<<"多项式A(x)与B(x)"<<endl;
    	            cout<<"请输入多项式A(x):"<<endl;
	                A.polyncreat();
	               cout<<endl<<"A(x)=";
            	  A.printpolyn();
	               cout<<endl;
	           cout<<endl<<"请输入多项式B(x) :"<<endl;
	           B.polyncreat();
	            cout<<endl<<"B(x)=";
	          B.printpolyn();
	           cout<<endl;
  int select,loop;  //select为菜单选择变量,loop为循环变量
            loop=1;
		 select=0;
    while(loop)
	{
		loop=0;
		cout<<"<------链式处理多项式的操作---->"<<endl;
		cout<<"<============MENU============>"<<endl;
		cout<<"        1、多项式加法"<<endl;
		cout<<"        2、多项式减法"<<endl;	
		cout<<"        3、多项式乘法"<<endl;
		cout<<"        4、多项式求导"<<endl;
		cout<<"        5、多项式求值"<<endl;
        cout<<"        6、退出到主菜单"<<endl;
		cout<<"<============================>"<<endl;
		cout<<"请输入您的选择:(1~6)"<<endl;
		cin>>select;
	    if(select==6)goto sign;
		switch(select)
		{
		case 1:    //add	       
	        cout<<endl<<"A(x)=";
    	   A.printpolyn();
	         cout<<endl<<"B(x)=";
	           B.printpolyn();
	            cout<<endl;
               cout<<endl;
	        C=A.Addpolyn(&B);
			cout<<"A(x)+B(x)=";
			C->printpolyn();
			cout<<endl;
			break;
		case 2:  //sub
			 cout<<endl<<"A(x)=";
    	   A.printpolyn();
           cout<<endl<<"B(x)=";
	           B.printpolyn();
	            cout<<endl<<endl;
			C=A.Substractpolyn(&B);
			cout<<"A(x)-B(x)=";
			C->printpolyn();
			cout<<endl;
            break;
       case 3:	//mul
			 cout<<endl<<"A(x)=";
    	   A.printpolyn();
	       cout<<endl<<"B(x)=";
	           B.printpolyn();
	            cout<<endl;
				 cout<<endl;
            C=A.Mulpolyn(&B);
			cout<<"A(x)*B(x)=";
			C->printpolyn();
			cout<<endl;
            break;
      	case 4:  //derivative
		
			 cout<<endl<<"A(x)=";
    	   A.printpolyn();
	        cout<<endl<<endl;
			A.daoshu(*C);
			cout<<"A(x)导数:";
			C->printpolyn();
			cout<<endl;
			break;
   		case 5:    //value
            double sum,x;
			cout<<"请输入x的值"<<endl;
		   cout<<"x=";
			cin>>x;
			 cout<<endl<<"A(x)=";
	          A.printpolyn(); 
			  	cout<<endl<<endl;
			sum=A.Resultpolyn(x);
			cout<<"A(x)函数值为"<<sum;
              cout<<endl;
			  	break;
		default:
			cout<<"ERROR!!  Selection  Out Of  Menu!"<<endl;
			loop=1;
			break;
		}	
		if(!loop)
		{    cout<<"<******************************>"<<endl;
			  cout<<"**"<<" 返回子菜单,   请按 1 "<<endl;
              cout<<"**"<<" 返回主菜单,   请按 0 "<<endl;
			  cout<<"**"<<" 退出本程序,   请按 7 "<<endl;
             cout<<"<******************************>"<<endl;
			 cout<<"请输入您的选择:(1 or 0 or 7)"<<endl;
			cin>>loop;
		}    
		    if(loop==0) goto sign;
			if(loop==7) goto sign1;
	} 
            break;
              }

			case 2:
			{
             int select2,loop2;
	//select2为菜单选择变量,power为求导阶数,loop为循环变量
          	double x,sum2;//sum为所求函数值
	          sum2=0;
	            loop2=1;
	           select2=0;
	         //  power=0;
         cout<<"请输入每一项的系数coef和指数exp"<<endl;
	    cout<<"注意:系数与指数要隔项输入,以(0,0)结束"<<endl;
			cout<<"请输入多项式A(x):"<<endl;
	     	CreatPloyn(pa);
		  cout<<"请输入多项式B(x):"<<endl;
		  CreatPloyn(pb);
	
	while(loop2)
	{
		loop2=0;
		cout<<"<------用数组处理多项式------>"<<endl;
		cout<<"<============MENU============>"<<endl;
		cout<<"        1、多项式加法"<<endl;
		cout<<"        2、多项式减法"<<endl;	
		cout<<"        3、多项式乘法"<<endl;
		cout<<"        4、多项式求值"<<endl;
		cout<<"        5、多项式求导"<<endl;
		cout<<"        6、退出到主菜单"<<endl;
		cout<<"<============================>"<<endl;
		cout<<"请输入您的选择:(1~6)"<<endl;
		cin>>select2;
		if(select2==6)goto sign;
		switch(select2)
		{
		case 1:
			p=AddPloyn(pa,pb);
			cout<<"A(x)+B(x)=";
			PrintPloyn(p);
			cout<<endl;
			break;
		case 2:
             cout<<"A(x)-B(x)=";
			SubtractPloyn(pa,pb);
		    cout<<endl;
			break;
		case 3:
	        cout<<"A(x)*B(x)=";
			MultiPloyn(pa,pb);
			cout<<endl;
			break;
		case 4:
			cout<<"请输入数值x:"<<endl;
		     cin>>x;
			cout<<"多项式 A(x)";
			PrintPloyn(pa);
	        cout<<endl;
			sum2=ValuePloyn(pa,x);
 	        cout<<"x="<<x<<"时,A(x)值为:"<<sum2<<endl;
		    cout<<endl;
			break;
		case 5:
	
	      	cout<<"请输入多项式求导的阶数:"<<endl;
		//	cin>>power;
			DerivativePloyn(pa,1);
		    cout<<endl;
			break;
////////////////////////////////////////////////////
		default:
			cout<<"ERROR!! Your Selection Is Out Of The Menu!"<<endl;
			loop2=1;
			break;
		}	
		if(!loop2)
		
		{    cout<<"<******************************>"<<endl;
			  cout<<"**"<<" 返回子菜单,   请按 1 "<<endl;
              cout<<"**"<<" 返回主菜单,   请按 0 "<<endl;
			  cout<<"**"<<" 退出本程序,   请按 7 "<<endl;
             cout<<"<******************************>"<<endl;
			 cout<<"请输入您的选择:(1 or 0 or 7)"<<endl;
				cin>>loop2;
		}    
	          if(loop2==0) goto sign;
			  if(loop2==7) goto sign1;
	}     
          break;
	}
/////////////////////////////////////////////////////////////////////////////
		default:
		{
			cout<<"ERROR!! Your Selection Is Out Of The Menu!"<<endl;
			loop1=1;
			break;
		}
		if(!loop1)
		{
			cout<<"要继续多项式处理吗?1/0"<<endl;
			cin>>loop1;
		}
	 } 
   }
}

⌨️ 快捷键说明

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