📄 main.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 + -