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

📄 main.cpp

📁 可以实现两多项式的加减乘除及微积分运算
💻 CPP
字号:
#include"Polyn.h"
#include"function.h"

void main()
{	Linklist head,head1,point;
	char str[MAX];
	int oper,i=0;

	
	while(1)
	{	printf("\t\t\t指定操作\n");
		printf("\t\t\t1.两多项式相加\n\t\t\t2.两多项式相减\n\t\t\t3.两多项式相乘\n");
		printf("\t\t\t4.两多项式相除\n\t\t\t5.多项式微分\n\t\t\t6.多项式积分\n\t\t\t7.结束操作\n\n");
		scanf("%d",&oper);
		i=0;
		
		if(oper==7)	
		{	printf("谢谢使用\n");
			break;
		}
		switch(oper)
		{	case 1:	printf("输入第一个多项式,以#结束:\n\n");
					printf("例如输入 3x^3-x^2+4x-7#\n\n");			
					while((str[i]=getchar())!='#')				
						if(str[i]!='^'&&str[i]!='\n')		i++;	
					str[i]='#',str[i+1]='\0';
					head=string_change_link(str);
					printf("输入第二个多项式,以#结束:\n\n");
					i=0;
					while((str[i]=getchar())!='#')				
						if(str[i]!='^'&&str[i]!='\n')		i++;	
					str[i]='#',str[i+1]='\0';
					head1=string_change_link(str);


					printf("第一个表达式是:");
					print(head);
					printf("第二个表达式是:");
					print(head1);

					
					head=unite(head,head1);
					printf("表达式相加后为:");
					print(head);

					do{	point=head->next;
						free(head);
						head=point;
					}while(point!=NULL);
					break;

			case 2:	printf("输入第一个多项式,以#结束:\n\n");
					printf("例如输入 3x^3-x^2+4x-7#\n\n");			
					while((str[i]=getchar())!='#')				
						if(str[i]!='^'&&str[i]!='\n')		i++;	
					str[i]='#',str[i+1]='\0';
					head=string_change_link(str);
					printf("输入第二个多项式,以#结束:\n\n");
					i=0;
					while((str[i]=getchar())!='#')				
						if(str[i]!='^'&&str[i]!='\n')		i++;	
					str[i]='#',str[i+1]='\0';
					head1=string_change_link(str);


					printf("第一个表达式是:");
					print(head);
					printf("第二个表达式是:");
					print(head1);

					
					head=_unite(head,head1);
					printf("表达式相减后为:");
					print(head);

					do{	point=head->next;
						free(head);
						head=point;
					}while(point!=NULL);
					break;

			case 3:	printf("输入第一个多项式,以#结束:\n\n");
					printf("例如输入 3x^3-x^2+4x-7#\n\n");			
					while((str[i]=getchar())!='#')				
						if(str[i]!='^'&&str[i]!='\n')		i++;	
					str[i]='#',str[i+1]='\0';
					head=string_change_link(str);
					printf("输入第二个多项式,以#结束:\n\n");
					i=0;
					while((str[i]=getchar())!='#')				
						if(str[i]!='^'&&str[i]!='\n')		i++;	
					str[i]='#',str[i+1]='\0';
					head1=string_change_link(str);


					printf("第一个表达式是:");
					print(head);
					printf("第二个表达式是:");
					print(head1);

					
					head=multiply(head,head1);
					printf("表达式相乘后为:");
					print(head);
					
					do{	point=head1->next;
						free(head1);
						head1=point;
					}while(point!=NULL);
					do{	point=head->next;
						free(head);
						head=point;
					}while(point!=NULL);
					break;

			case 4:	printf("输入第一个多项式,以#结束:\n\n");
					printf("例如输入 3x^3-x^2+4x-7#\n\n");			
					while((str[i]=getchar())!='#')				
						if(str[i]!='^'&&str[i]!='\n')		i++;	
					str[i]='#',str[i+1]='\0';
					head=string_change_link(str);
					printf("输入第二个多项式,以#结束:\n\n");
					i=0;
					while((str[i]=getchar())!='#')				
						if(str[i]!='^'&&str[i]!='\n')		i++;	
					str[i]='#',str[i+1]='\0';
					head1=string_change_link(str);


					printf("第一个表达式是:");
					print(head);
					printf("第二个表达式是:");
					print(head1);

					division(head,head1);
					
					do{	point=head1->next;
						free(head1);
						head1=point;
					}while(point!=NULL);
					do{	point=head->next;
						free(head);
						head=point;
					}while(point!=NULL);
					break;

			case 5:	printf("输入多项式,以#结束:\n\n");
					printf("例如输入 3x^3-x^2+4x-7#\n\n");			
					while((str[i]=getchar())!='#')				
						if(str[i]!='^'&&str[i]!='\n')		i++;	
					str[i]='#',str[i+1]='\0';
					head=string_change_link(str);


					for(point=head->next;point!=NULL;point=point->next)
					{	if(point->exp==0)	point->coef_numerator=0;
						else				
						{	point->coef_numerator*=point->exp;
							point->exp-=1;
						}
						
					}
					printf("表达式微分后为:");
					print(head);

					do{	point=head->next;
						free(head);
						head=point;
					}while(point!=NULL);
					break;


			case 6:	printf("输入多项式,以#结束:\n\n");
					printf("例如输入 3x^3-x^2+4x-7#\n\n");			
					while((str[i]=getchar())!='#')				
						if(str[i]!='^'&&str[i]!='\n')		i++;	
					str[i]='#',str[i+1]='\0';
					head=string_change_link(str);

					for(point=head->next;point!=NULL;point=point->next)
					{	point->exp+=1;	
						if(point->coef_numerator%point->exp==0)
						{	point->coef_denominator=1;
							point->coef_numerator/=point->exp;
						}
						else
						{	point->coef_denominator=point->exp;
							reduction(&point->coef_numerator,&point->coef_denominator);
						}
					}

					printf("表达式积分后为:");
					print(head);

					do{	point=head->next;
						free(head);
						head=point;
					}while(point!=NULL);
					break;


			default: continue;
		}
	}
}

⌨️ 快捷键说明

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