C算法:一元多项式的计算任务:能够按照指数降序排列建立并输出多项式,能够完成两个多项式的相加、相减,并将结果输入.亲自能在TC++3.0或者VC++6.0编译成功,编译成功后我会追加分数的.谢

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 02:39:45
C算法:一元多项式的计算任务:能够按照指数降序排列建立并输出多项式,能够完成两个多项式的相加、相减,并将结果输入.亲自能在TC++3.0或者VC++6.0编译成功,编译成功后我会追加分数的.谢

C算法:一元多项式的计算任务:能够按照指数降序排列建立并输出多项式,能够完成两个多项式的相加、相减,并将结果输入.亲自能在TC++3.0或者VC++6.0编译成功,编译成功后我会追加分数的.谢
C算法:一元多项式的计算
任务:能够按照指数降序排列建立并输出多项式,能够完成两个多项式的相加、相减,并将结果输入.亲自能在TC++3.0或者VC++6.0编译成功,编译成功后我会追加分数的.
谢谢!

C算法:一元多项式的计算任务:能够按照指数降序排列建立并输出多项式,能够完成两个多项式的相加、相减,并将结果输入.亲自能在TC++3.0或者VC++6.0编译成功,编译成功后我会追加分数的.谢
#include
#include
typedef struct node{//定义节点类型
float coef;
int expn;
struct node * next;
}PLOY;
void start()//用户选择界面
{
printf("\n");
printf("请选择操作:\n");
printf("0.退出\n");
printf("1.两个一元多项式相加\n");
printf("2.两个一元多项式相乘\n");
printf("3.两个一元多项式相减\n");
}
void insert(PLOY *head,PLOY *inpt)//查找位置插入新链节程序
{
PLOY *pre,*now;
int signal=0;
pre=head;//pre定义为现在的前一个链节
if(pre->next==NULL) {pre->next=inpt;}
else {now=pre->next;
while(signal==0)
{
if(inpt->expnexpn)//当新链节小于现在的连接时向后移一个链节
{
if(now->next==NULL)
{
now->next=inpt;
signal=1;
}
else
{
pre=now;
now=pre->next;
}
}
else
if(inpt->expn>now->expn)//如果发现比现在的链节大了就插入到这个连接的前面
{
inpt->next=now;
pre->next=inpt;
signal=1;
}
else
{
now->coef=now->coef+inpt->coef;
signal=1;
free(inpt);//与当前链节相等指数
if(now->coef==0)
{
pre->next=now->next;
free(now);
}
}
}
}
}
PLOY *creat(char ch)//输入多项式
{
PLOY *head,*inpt;
float x;
int y;
head=(PLOY *)malloc(sizeof(PLOY));//创建链表头
head->next=NULL;
printf("请输入一元多项式%c:(格式是:系数 指数;以0 0 结束!)\n",ch);
scanf("%f %d",&x,&y);
while(x!=0)
{
inpt=(PLOY *)malloc(sizeof(PLOY));//创建新链节
inpt->coef=x;
inpt->expn=y;
inpt->next=NULL;
insert(head,inpt);//不然就查找位置并且插入新链节
printf("请输入一元多项式%c的下一项:(以0 0 结束!)\n",ch);
scanf("%f %d",&x,&y);
}
return head;
}
PLOY *addPLOY(PLOY *head,PLOY *pre)//多项式相加
{
PLOY *inpt;
int flag=0;
while(flag==0)
{
if(pre->next==NULL)
flag=1;//当现在指向空时跳出循环
else
{
pre=pre->next;
inpt=(PLOY *)malloc(sizeof(PLOY));//创建新链节
inpt->coef=pre->coef;
inpt->expn=pre->expn;
inpt->next=NULL;
insert(head,inpt);
}//否则把当前"g(x)"的链节插入到"y(x)"中
}
return head;
}
PLOY *minusPLOY(PLOY *head,PLOY *pre)//多项式相加
{
PLOY *inpt;
int flag=0;
while(flag==0)
{
if(pre->next==NULL)
flag=1;//当现在指向空时跳出循环
else
{
pre=pre->next;
inpt=(PLOY *)malloc(sizeof(PLOY));//创建新链节
inpt->coef=0-pre->coef;
inpt->expn=pre->expn;
inpt->next=NULL;
insert(head,inpt);
}//否则把当前"g(x)"的链节插入到"y(x)"中
}
return head;
}
PLOY *byPLOY(PLOY *head1,PLOY *head2)//多项式相乘
{
PLOY *inpt,*res,*pre;
int flag=0;
res=(PLOY *)malloc(sizeof(PLOY));//创建链表头
res->next=NULL;
head1=head1->next;
pre=head2;
while(flag==0)
{
if(pre->next==NULL)
{
pre=head2;//当现在指向空时跳出循环
head1=head1->next;
continue;
}
if(head1==NULL)
{
flag=1;//当现在指向空时跳出循环
continue;
}
pre=pre->next;
inpt=(PLOY *)malloc(sizeof(PLOY));//创建新链节
inpt->coef=pre->coef*head1->coef;
inpt->expn=pre->expn+head1->expn;
inpt->next=NULL;
insert(res,inpt);//把当前"g(x)"的链节插入到"y(x)"中
}
return res;
}
void print(PLOY *fun)//输出多项式
{
PLOY *printing;
int flag=0;
printing=fun->next;//正在被打印的链节
if(fun->next==NULL)//如果函数为空打印0
{
printf("0\n");
return;
}
while(flag==0)
{
if(printing->coef>0&&fun->next!=printing)
printf("+");//为正数时打印"+"号
if(printing->coef==1);//如果为"1"就不用打印系数了
else if(printing->coef==-1)
printf("-");//如果为"-1"就打印"-"号就行了
else
printf("%f",printing->coef);//其余情况都得打印
if(printing->expn!=0) printf("x^%d",printing->expn);//如果指数为"0"不打印指数项
else if((printing->coef==1)||(printing->coef==-1))
printf("1");
if(printing->next==NULL)
flag=1;//如果现在的链节没有下一个就结束
else
printing=printing->next;
}
printf("\n");
}
void main()
{
PLOY *f,*g;
int sign=-1;//设置标志
start();
while(sign!=0)
{
scanf("%d",&sign);
switch(sign)
{
case 0:
break;//退出
case 1:
{
printf("你选择的操作是多项式相加:\n");
f=creat('f');//输入多项式f(x)
printf("f(x)=");
print(f);
g=creat('g');//输入多项式g(x)
printf("g(x)=");
print(g);
printf("F(x)=f(x)+g(x)=");
f=addPLOY(f,g);//两个多项式相加
print(f);
sign=-1;//复位标志
start();//回复用户选择界面
break;
}
case 2:
{
printf("你选择的操作是多项式相乘:\n");
f=creat('f');//输入多项式f(x)
printf("f(x)=");
print(f);
g=creat('g');//输入多项式g(x)
printf("g(x)=");
print(g);
printf("F(x)=f(x)*g(x)=");
f=byPLOY(f,g);//两个多项式相加
print(f);
sign=-1;//复位标志
start();//回复用户选择界面
break;
}
case 3:
{
printf("你选择的操作是多项式相减:\n");
f=creat('f');//输入多项式f(x)
printf("f(x)=");
print(f);
g=creat('g');//输入多项式g(x)
printf("g(x)=");
print(g);
printf("F(x)=f(x)-g(x)=");
f=byPLOY(f,g);//两个多项式相加
print(f);
sign=-1;//复位标志
start();//回复用户选择界面
break;
}
default:
{
printf("输入有误!请重新选择操作!\n");//选择错误,返回选择界面
start();
break;
}
}
}
}
这个是我交的课程设计
亲自用VC++6.0调试过 好使 还设计了乘法

C算法:一元多项式的计算任务:能够按照指数降序排列建立并输出多项式,能够完成两个多项式的相加、相减,并将结果输入.亲自能在TC++3.0或者VC++6.0编译成功,编译成功后我会追加分数的.谢 一元多项式的计算 能够按照指数降序排列建立并输出多项式 能够完成两个多项式的相加及相减要C语言编写的,能运行的,最好有注释,嘻嘻……请高手赐教啊 .一元多项式计算.能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加、相减,并将结果输入 用秦九韶算法计算多项式 一元多项式的实现(C语言)求程序大神帮忙解决一下数据结构的练习.要求:1)一元多项式的输入,显示输出(1)提示输入多项式系数和指数,输入之后把多项式按照常用形式显示出来(2)计算结 数据结构的二元多项式计算要求:1.能够按照指数和升序排列建立并输出多项式;2.能够完成两个多项式的加法、减法、乘法,并将结果存储于一个新的多项式中; 二元多项式计算能够按照指数和升序排列建立并输出多项式;能够完成两个多项式的加法,减法,乘法,并将结果存储于一个新的多项式中. 计算(a+b+c)(d+e+f)多项式乘多项式的题,不过貌似有简便算法. 数据结构一元多项式的代数运算1.课程设计目的:本设计的主要目的是设计一个一元多项式简单计算器.熟悉掌握一元多项式在链式存储结构上的实现,能够按照指数降序排列建立并输出多项式 一元多项式运算一.问题描述设计一个简单的一元稀疏多项式加法运算器.二.基本要求一元稀疏多项式简单计算器的基本功能包括:1.按照指数升序次序,输入并建立多项式A与B.2.计算多项 一元稀疏多项式计算器设计任务:设计一个一元稀疏多项式简单计算器.设计要求:一元稀疏多项式简单计算器的基本功能是:(1)输入并建立多项式——creatpolyn();(2)输出多项式,输出形式为 一元多项式的运算, 一元多项式计算(只要加减计算) 两个以单链表作存储结构的一元多项式A和B,编写算法将多项式A和B相加,要求利用原表的结点空间和多项式. 计算一元n次多项式P(x,n)=a0+a1x+a2x^2+...+anx^n的值,输入x,n,a0,a1,...an,输出多项式P(x,n)的值.设计算法求解,请选择合适的输入,输出格式,要求算法具有较好的时间性能. 已知序列如何求该序列的最小次数生成多项式?求C语言算法.例如序列010001011110101,如何设计算法求出其生成多项式?最好是迭代算法. 设计一个一元多项式简单的计算器(数据结构C语言版)急要求:一元多项式计算器的基本功能定为 (1) 建立多项式 (2) 输出多项式 (3) 两个多项式相加,建立并输出和多项式 (4) 两个多项式相减 多项式计算要求:1主要功能:(1)输入并建立多项式;(2)输出多项式;(3)两个多项式相加,建立并输出和多项式;(4)两个多项式相减,建立并输出差多项式.2.要求:一元多项式简单计算器的基本