问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

一元多项式简单的计算器

发布网友 发布时间:2022-04-21 21:35

我来回答

5个回答

热心网友 时间:2023-05-15 04:15

//一元稀疏多项式计算器
#include <stdio.h>
#include <stdlib.h>

#define OK 1;
#define READ(I) while (((I)=getchar())=='\n'); //读入合法字符
typedef int status;
typedef struct PolyNode
{
float coef;
int expn;
struct PolyNode *next;
}Poly,*P_Poly;

status CreatPoly(P_Poly*,int); //创建多项式链表
void OutP_Poly(P_Poly); //输出多项式
void AddPoly(P_Poly*,P_Poly,P_Poly); //求和
void DecPoly(P_Poly*,P_Poly,P_Poly); //求差
void DelPoly(P_Poly*); //删除并释放多项式

status main()
{
P_Poly PolyHead[26]={0};
char menu,name;
for (;;)
{

printf ("1.建立多项式\n");
printf ("2.输出多项式\n");
printf ("3.求两个多项式之和(必须先创建),建立和式并输出\n");
printf ("4.求两个多项式之差(必须先创建),建立差式并输出\n");
printf ("5.删除多项式\n");
printf ("6.退出\n");
printf ("请选择指令:");
READ(menu)
switch (menu)
{
case '1':
{
int n;
printf ("请输入要创建的多项式的名称(单个小写字母表示):");
READ(name)
if (NULL!=PolyHead[name-'a'])
{
printf ("此多项式已经存在!\n");
break;
}
printf ("请输入项数:");
scanf ("%d",&n);
if(CreatPoly(&PolyHead[name-'a'],n)) printf ("多项式%c创建完毕!\n",name);
break;
}
case '2':
printf ("请输入要输出的多项式的名称:");
READ(name)
if (NULL==PolyHead[name-'a'])
{
printf ("此多项式不存在!\n");
break;
}
OutP_Poly(PolyHead[name-'a']);
break;
case '3':
{
char name1,name2;
printf ("请输入加式一的名称:");
READ(name1)
if (NULL==PolyHead[name1-'a'])
{
printf ("此多项式不存在!请先创建\n");
break;
}
printf ("请输入加式二的名称:");
READ(name2)
if (NULL==PolyHead[name2-'a'])
{
printf ("此多项式不存在!请先创建\n");
break;
}
printf ("请输入要创建的和式的名称:");
READ(name)
if (NULL!=PolyHead[name-'a'])
{
printf ("此多项式已经存在!\n");
break;
}
AddPoly(&PolyHead[name-'a'],PolyHead[name1-'a'],PolyHead[name2-'a']);
OutP_Poly(PolyHead[name-'a']);
break;
}
case '4':
{
char name1,name2;
printf ("请输入被减式的名称:");
READ(name1)
if (NULL==PolyHead[name1-'a'])
{
printf ("此多项式不存在!请先创建\n");
break;
}
printf ("请输入减式的名称:");
READ(name2)
if (NULL==PolyHead[name2-'a'])
{
printf ("此多项式不存在!请先创建\n");
break;
}
printf ("请输入要创建的差式的名称:");
READ(name)
if (NULL!=PolyHead[name-'a'])
{
printf ("此多项式已经存在!\n");
break;
}
DecPoly(&PolyHead[name-'a'],PolyHead[name1-'a'],PolyHead[name2-'a']);
OutP_Poly(PolyHead[name-'a']);
break;
}
case '5':
printf ("请输入要删除的多项式名称:");
READ(name)
if (NULL==PolyHead[name-'a'])
{
printf ("此多项式不存在!\n");
break;
}
DelPoly(&PolyHead[name-'a']);
printf ("多项式%c已删除!\n",name);
break;
case '6':
return OK;
}
}
}

status CreatPoly(P_Poly* P_PolyHead,int n)
{ //为确保其他子函数正常运行,入口参数要求不含同类项、指数递减
int i=0;
P_Poly p,tail;
*P_PolyHead=(Poly*)malloc(sizeof(Poly));
(*P_PolyHead)->expn=n;
tail=*P_PolyHead;
printf ("请按照指数递减序输入最简形式的多项式\n");
for (;i<n;i++)
{
p=(Poly*)malloc(sizeof(Poly));
printf ("请输入第%d项的系数和指数(系数,指数):",i+1);
scanf ("%f,%d",&(p->coef),&(p->expn));
tail->next=p;
tail=p;
}
tail->next=NULL;
return OK;
}

void OutP_Poly(P_Poly PolyHead)
{
int i=0;
P_Poly p;
printf ("%d ",PolyHead->expn);
p=PolyHead->next;
for (;i<PolyHead->expn;i++)
{
printf ("%f,%d ",p->coef,p->expn);
p=p->next;
}
printf ("\n");
}

void AddPoly(P_Poly* P_PolyHead,P_Poly PolyHead1,P_Poly PolyHead2)
{
int i=0;
P_Poly p1,p2,p,tail;
p1=PolyHead1->next;
p2=PolyHead2->next;
*P_PolyHead=(P_Poly)malloc(sizeof(Poly));
p=tail=*P_PolyHead;
while(p1&&p2)
{
int e1,e2;
e1=p1->expn;
e2=p2->expn;
if (e1>e2)
{
p=(P_Poly)malloc(sizeof(Poly));
tail->next=p;
tail=p;
*p=*p1;
p1=p1->next;
i++;
}
else if(e1==e2)
{
float sum_c=p1->coef+p2->coef;
if (sum_c!=0.0)
{
p=(P_Poly)malloc(sizeof(Poly));
tail->next=p;
tail=p;
p->coef=sum_c;
p->expn=e1;
i++;
}
p1=p1->next;
p2=p2->next;
}
else if (e1<e2)
{
p=(P_Poly)malloc(sizeof(Poly));
tail->next=p;
tail=p;
*p=*p2;
p2=p2->next;
i++;
}
}
while (p1)
{
p=(Poly*)malloc(sizeof(Poly));
*p=*p1;
tail->next=p;
tail=p;
p1=p1->next;
i++;
}
while (p2)
{
p=(Poly*)malloc(sizeof(Poly));
*p=*p2;
tail->next=p;
tail=p;
p2=p2->next;
i++;
}
(*P_PolyHead)->expn=i;
tail->next=NULL;
}

void DecPoly(P_Poly* P_PolyHead,P_Poly PolyHead1,P_Poly PolyHead2)
{
int i=0;
P_Poly p1,p2,p,tail;
p1=PolyHead1->next;
p2=PolyHead2->next;
*P_PolyHead=(P_Poly)malloc(sizeof(Poly));
p=tail=*P_PolyHead;
while(p1&&p2)
{
int e1,e2;
e1=p1->expn;
e2=p2->expn;
if (e1>e2)
{
p=(P_Poly)malloc(sizeof(Poly));
tail->next=p;
tail=p;
*p=*p1;
p1=p1->next;
i++;
}
else if(e1==e2)
{
float dif_c=p1->coef-p2->coef;
if (dif_c!=0.0)
{
p=(P_Poly)malloc(sizeof(Poly));
tail->next=p;
tail=p;
p->coef=dif_c;
p->expn=e1;
i++;
}
p1=p1->next;
p2=p2->next;
}
else if (e1<e2)
{
p=(P_Poly)malloc(sizeof(Poly));
tail->next=p;
tail=p;
p->coef=-p2->coef;
p->expn=p2->expn;
p2=p2->next;
i++;
}
}
while (p1)
{
p=(Poly*)malloc(sizeof(Poly));
*p=*p1;
tail->next=p;
tail=p;
p1=p1->next;
i++;
}
while (p2)
{
p=(Poly*)malloc(sizeof(Poly));
*p=*p2;
tail->next=p;
tail=p;
p2=p2->next;
i++;
}
(*P_PolyHead)->expn=i;
tail->next=NULL;
}

void DelPoly(P_Poly* P_PolyHead)
{
P_Poly p,prior;
p=prior=*P_PolyHead;
while (p->next)
{
p=p->next;
free(prior);
prior=p;
}
*P_PolyHead=NULL;
}
自己修改修改风格就可以用了

热心网友 时间:2023-05-15 04:16

我靠,如楼上说的。。真懒。。第一道多项式的数据结构那本书上都有详细的解说了。。实现一下就可以了。。第二道是有点复杂

热心网友 时间:2023-05-15 04:16

工作量比较大。
百度的分没用,还不如何丹的论坛的金币,至少可以换QB
如果100何丹论坛的金币,我今天晚上就答。

这样吧,如果你的问题明天还没人答,我就帮你答吧

热心网友 时间:2023-05-15 04:17

有偿服务。绝对满足所有要求,良好的代码风格,明了的代码注释。

Q Q 703252627

热心网友 时间:2023-05-15 04:17

这个是有点难。。。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 windows自带计算器的测试计划 基于单片机的多功能计算器 EXCEL如何制作工资个税计算器 饺子的做法300字 怎么用计算器算成本 包饺子的过程100字 超级计算器花了多少年时间做成 各种各样的计算器有什么共同点? 怎么包饺子文字说明 怎样包饺子?给一段话三百字 我是华为畅享9,为什么语音助手强制停用后,语音助... 』小学教师的工作量如何计算? 工作量法法计提折旧计算器下怎么算 华为畅享10plus的语音助手为什么会自己弹出来,怎... 包饺子的简单步骤文字 为什么华为语音助手老是莫名其妙跳出来,我明明哪... 日记十篇450字 第一篇写包饺子 第二篇写去超市 下... 包饺子的方法(文字)在线等,跪求了&#128591;&#12... 刷机后华为手机助手老是跳出来 送给小学生的毕业礼物送什么好 c语言编程 设计一个计算器 包饺子过程100子字 JPH如何计算 最早的计算机是用来进行做什么的? 计算机是如何发明的? 广联达和鲁班算量的原理一样吗? 计算机鼻祖是什么 下载的ae字幕条模板如何使? 怎么样计算工作饱和度 ae中 怎样让字幕条模板反复利用 而文字内容可以不同 关于电子计算机 AE字幕条如何使用?如何导出? 办公用品比如计算器算资产吗 求AE新闻联播的字幕条模板 为什么我的AE字幕条模板直接以AE工程的方式导入到P... 快手视频里的音乐环绕得是什么软件 下载好的动态字幕条 怎么用AE消除后面的黑色背景,... AE模板修改文字问题 ae模版音频logo,背景音乐开头都加了一句话,是什么? 视频编辑特效