一元多项式计算器

合集下载

数据结构_一元多项式运算器_cpp代码(visual c++)

数据结构_一元多项式运算器_cpp代码(visual c++)
multinomialMultiply(La,L1,L2);
multinomialDestroy(L1); //清空L1,用以作为下一轮的存储
multinomialMultiply(La,L2,L1);
multinomialDestroy(L2);
}
multinomialMultiply(La,L1,L2);
if(p->cof > 0)
printf("%c%.3lf",c,p->cof);
else
printf("%.3lf",p->cof);
}
else{
if(p->cof > 0)
printf("%c%.3lfx^%d",c,p->cof,p->ind);
ElemType cof; //多项式系数
int ind; //多项式次幂
struct LNode* next;
} * LinkList;//LinkList是指向LNode的指针!!!!
//多项式的创建(OK)
void multinomialCreat(LinkList &L){
scanf("%d",&L->ind);//用头结点的ind保存多项式项数
for(int i = 0;i < L->ind;i++){
s = (LNode*)malloc(sizeof(LNode));
printf("Please input the multinomial in descending order, every term\'s coefficent and index in form\"a,b\".\n");

一元稀疏多项式计算器数据结构

一元稀疏多项式计算器数据结构

一元稀疏多项式计算器数据结构一元稀疏多项式计算器是一种用于计算多项式的工具,该工具可以用于代数计算、数学分析以及计算机科学中的算法设计。

它可以通过一种特殊的数据结构来存储多项式,并可以对其进行加法、减法、乘法、除法等运算。

这种数据结构被称为稀疏多项式,它是一种基于链表的数据结构。

在稀疏多项式中,每个节点表示一个单项式,节点的数据包含该单项式的系数和指数。

在一个稀疏多项式中,只有少数几个节点表示一个多项式,这就是稀疏性的来源。

稀疏多项式的加法和减法非常简单,只需要对两个多项式的对应节点进行加减即可。

而稀疏多项式的乘法需要更复杂的算法。

乘法的过程中需要将两个多项式的每个单项式乘起来,并将同类项合并成一个新的多项式。

这个过程涉及到大量的链表操作,但只要注意一些细节,将会得到正确的结果。

除了基本的加法、减法、乘法运算,一元稀疏多项式计算器还有一个非常重要的运算,那就是求导。

求导是一种将多项式每个单项式的指数减一,并将系数乘以指数的运算。

它常用于解决微积分、概率论等问题。

求导操作可以通过修改节点的指数和系数来实现。

在计算机科学中,稀疏多项式可以用于设计高效的算法,例如在数论、密码学、图像处理、计算器表达式求值等方面。

稀疏多项式的优点在于它可以有效地节省存储空间和计算时间。

通过动态链表的形式,可以轻松地添加、删除节点,使得稀疏多项式非常适合用于处理大规模的数据。

总的来说,一元稀疏多项式计算器是一种非常实用的工具。

它可以用于解决多项式运算问题,并可以为计算机科学方面的算法设计提供很大的帮助。

通过了解这种数据结构,我们可以更深入地理解代数学、微积分学等数学原理,并且能够更好地应用于实际问题中。

一元稀疏多项式计算器(数据结构)

一元稀疏多项式计算器(数据结构)

院系:计算机科学学院专业:软件工程年级: 2013级课程名称:数据结构姓名:韦宜(201321092034)指导教师:宋中山2015年 12 月 15日题目:设计一个一元稀疏多项式简单计算器班级:软件工程1301 姓名:韦宜学号:201321092034 完成日期:12月15日一、需求分析问题描述:设计一个一元多项式加法器基本要求:输入并建立多项式;(2)两个多项式相加;(3)输出多项式:n, c1, e1, c2, e2, …cn , en, 其中,n是多项式项数,ci和ei分别是第 i 项的系数和指数,序列按指数降序排列。

(4)计算多项式在x处的值;(5)求多项式的导函数。

软件环境:Windows,UNIX,Linux等不同平台下的Visual C++ 6.0硬件环境: 512MB内存,80Gb硬盘,Pentium4 CPU,CRT显示器。

概要分析本程序有五个函数:PolyNode *Input()(输入函数);PolyNode *Deri(PolyNode *head)(求导函数);PolyNode * Plus(PolyNode *A,PolyNode *B)(求和函数);void Output(PolyNode*head)(输出函数);int main()(主函数)本程序可使用带有附加头结点的单链表来实现多项式的链表表示,每个链表结点表示多项式的一项,命名为node,它包括两个数据成员:系数coef和指数exp,他们都是公共数据成员,*next为指针域,用链表来表示多项式。

适用于不定的多项式,特别是对于项数再运算过程中动态增长的多项式,不存在存储溢出的问题。

其次,对于某些零系数项,在执行加法运算后不再是零系数项,这就需要在结果多项式中增添新的项;对于某些非零系数项,在执行加法运算后可能是零系数项,这就需要在结果多项式中删去这些项,利用链表操作,可以简单的修改结点的指针以完成这种插入和删除运算(不像在顺序方式中那样,可能移动大量数据项)运行效率高。

简单的一元多项式计算器程序

简单的一元多项式计算器程序

简单的一元多项式计算器程序简单的一元多项式计算器程序是一款用于求解一元多项式的数学工具。

该程序能够接收用户输入的多项式表达式,并根据用户的需求进行加法、减法、乘法、除法等基本运算,以及求导、积分等高级运算。

下面是该计算器程序的标准格式文本:一、程序介绍该一元多项式计算器程序是基于Python语言开发的,旨在提供一个简单易用的工具,帮助用户进行一元多项式的计算。

通过该程序,用户可以快速进行多项式的基本运算和高级运算,提高计算效率。

二、功能特点1. 支持一元多项式的输入:用户可以输入多项式表达式,例如2x^2 + 3x + 1,程序能够识别并进行计算。

2. 支持基本运算:程序支持一元多项式的加法、减法、乘法和除法运算,用户可以根据需要选择相应的运算。

3. 支持高级运算:程序还提供了求导、积分等高级运算功能,用户可以根据需要进行相关计算。

4. 提供友好的交互界面:程序提供了简洁、直观的用户界面,用户可以轻松输入多项式表达式,并查看计算结果。

5. 提供详细的计算过程:程序在计算过程中,会详细展示每一步的计算过程,让用户清晰了解计算的步骤和结果。

三、使用方法1. 输入多项式表达式:用户可以在程序界面中输入一元多项式的表达式,例如2x^2 + 3x + 1。

2. 选择运算类型:用户可以选择需要进行的运算类型,包括加法、减法、乘法、除法、求导和积分。

3. 查看计算结果:程序会根据用户的选择进行计算,并将计算结果显示在程序界面中。

四、示例演示假设用户输入了多项式表达式2x^2 + 3x + 1,并选择进行求导运算。

程序会按照如下步骤进行计算:1. 计算多项式的一阶导数:- 对2x^2求导,得到4x^1=4x;- 对3x求导,得到3;- 对1求导,得到0;2. 将各项导数相加,得到4x + 3。

五、注意事项1. 输入格式正确性:用户在输入多项式表达式时,请确保格式正确,例如每一项之间用"+"或"-"连接,指数使用"^"符号表示。

一元稀疏多项式计算器C语言课程设计

一元稀疏多项式计算器C语言课程设计

2014-2015学年第二学期《软件工程》课程设计报告题目:一元稀疏多项式计算器专业:计算机科学与技术班级:计算机科学与技术(2)班姓名:指导教师:成绩:一、问题描述错误!未定义书签。

二、需求分析错误!未定义书签。

三、概要设计错误!未定义书签。

四、详细设计错误!未定义书签。

五、源代码错误!未定义书签。

六、程序测试错误!未定义书签。

七、使用说明错误!未定义书签。

八、课设总结错误!未定义书签。

一、问题描述基本要求(1)输入并建立多项式;(2)输出多项式,输出形式为整数序列:n,c1,e1, c2,e2,,,,,,, cn,en,其中n是多项式的项数,ci,ei,分别是第i项的系数和指数,序列按指数降序排序;(3)多项式a和b相加,建立多项式a+b;(4)多项式a和b相减,建立多项式a-b;(5)计算多项式在x处的值。

(6)计算器的仿真界面。

设计目的数据结构是实践性很强的课程。

课程设计是加强学生实践能力的一个强有力手段。

课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。

严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用二、需求分析设计开发环境:软件方面:系统windows 7 编程软件:VC++思路分析:①一般情况下的一元n次多项式可写成pn(x)=p1xe1+p2xe2+……+pmxem其中,p1是指数为ei的项的非零系数,且满足0≦e1<e2<……<em=n ,若用一个长度为m且每个元素有两个数据项(系数项和指数项)的线性表((p1,e1),(p2,e2),……,(pm,em))便可惟一确定多项式pn(x)。

②用两个带表头结点的单链表分别存储两个多项式③根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式”中的一项;④只需要将第二个多项式的系数改为其相反数,然后根据一元多项式相加的运算规则便可以得到其相应的“差多项式”三、概要设计图3-1功能模块图为实现上述程序功能,用带表头结点的单链表存储多项式。

《数据结构》课程设计题目

《数据结构》课程设计题目

《数据结构》课程设计题目《数据结构》课程设计题目课程设计题一:学生成绩管理系统设计目的:1.2.3. 掌握线性链表的建立。

掌握线性链表的基本操作。

掌握查找的基本算法。

设计内容:利用线性链表实现学生成绩管理系统,具体功能:输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出,并能在屏幕上输出操作前后的结果。

设计要求:1.2.3.写出系统需求分析,并建模。

编程实现,界面友好。

输出操作前后的结果。

课程设计题二:停车场管理系统设计目的:1.2.3.4. 掌握栈和队列的建立。

掌握栈和队列的基本操作。

深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们。

加深对栈和队列的理解和认识。

设计内容:设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。

车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。

如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。

停车场内如有某辆车要开走,在他之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆在依原来的次序进场。

每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。

如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。

编制一程序模拟该停车场的管理。

设计要求:1. 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。

2. 每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。

3. 对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费,功能可自己添加)。

用链表实现一元多项式计算器

用链表实现一元多项式计算器
对于两个一元多项式中所有指数相同的项,对应指数相加减,若其结果不为零,则构成“和多项式”中的一项;对于两个一元多项式中所有指数不相同的项,则分别复抄到“和多项式”中去,复抄时应比较相应的指数值的大小,保证多项式序列的升序排列。
程序中一共定义了两种形式的数据结构,均为顺序存储结构,用带表头结点的单链表存储多项式,多项式的项数存放在头结点中:
j++;
}
for(i=0;i<h->num;i++)
v+=val[i];
printf("%.4f",v);
}
沈阳大学
课程设计说明书NO.11
HD *daoshu(HD *h)/*求导*/
{
JD *p=h->head;
h->head=p;
while(p!=NULL)
{
p->coef=p->coef*p->exp;
2.1.1问题描述:设计一个一元多项式简单计算器
基本要求:一元多项式简单计算器的基本功能是:
(1)输入并建立多项式
(2)输出多项式的类数学表达式,如x^15-8x^7-14(序列按指数降序排列)
(3)计算多项式在x处的值
(4)求多项式a的导函数a’
(5)多项式a和b相加,建立多项式a+b;
(6)多项式a和b相减,建立多项式a-b;
}JD;
typedefstructhhead
{
iБайду номын сангаасtnum;
structnode *head;
}HD;
HD *typeinput()/*输入*/
{
inti=0;
intm;

一元稀疏多项式计算器c语言

一元稀疏多项式计算器c语言

一元稀疏多项式计算器c语言一、背景。

在计算机领域中,一元稀疏多项式是一种较为重要的数据类型,它广泛应用于科学计算、图像处理等领域。

由于传统计算方法需要大量时间和计算资源,因此研究一种高效的一元稀疏多项式计算器显得十分重要。

二、需求分析。

基于以上背景,我们需要完成以下需求:1.实现一元稀疏多项式的基本运算,如加、减、乘、除法等。

2.实现一元稀疏多项式的系数排序,可以按照任意顺序排列。

3.实现一元稀疏多项式的表示方式,可供用户输入和输出。

三、设计方案。

为了满足以上需求,我们可以采用以下设计方案:1.多项式基本结构。

为了处理一元稀疏多项式的各种运算,我们需要为多项式定义一个基本的数据结构。

这个结构需要包含多项式的各项系数、指数、项数等信息。

我们可以采用数组或链表等方式实现这个数据结构。

2.多项式运算。

为了完成多项式的加、减、乘、除法等运算,我们需要实现相应的算法。

这些算法包括基于快速傅里叶变换的多项式乘法、除法等。

3.系数排序。

为了满足用户不同的需求,我们需要实现多项式系数的排序功能。

由于用户可以选择任意的顺序,我们需要保证排序算法的稳定性和高效性。

4.多项式表示。

为了方便用户输入和输出多项式,我们需要设计一个简洁易用的多项式表示方式。

用户可以根据需要选择带有系数和指数的输入方式,也可以选择只输入系数或指数。

四、实现细节。

为了优化计算效率和减少内存占用,我们可以在实现多项式运算时采用以下方法:1.采用链表存储多项式的数据结构,可以有效减少内存占用和复制开销。

2.对于多项式的加、减、乘、除法等运算,我们可以根据具体情况选择合适的运算算法。

如多项式加减可以直接遍历链表进行计算;多项式乘法可以使用快速傅里叶变换等算法。

3.为了提高排序效率,我们可以采用基于快速排序、归并排序等的排序算法。

对于多项式系数相同时,可以使用指数作为比较因素。

五、总结。

通过以上设计方案和实现细节,我们可以实现一个高效的一元稀疏多项式计算器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一元多项式计算器目录摘要 (1)1绪论 (1)2系统分析 (1)2.1功能需求 (1)2.2数据需求 (1)2.3性能需求 (1)3总体设计 (2)3.1系统设计方案 (2)3.2功能模块设计 (2)4详细设计 (3)4.1建立多项式 (4)4.2多项式相加 (4)4.3多项式相减 (5)4.4多项式相乘 (5)4.5计算器主函数 (6)5调试与测试 (7)5.1调试 (7)5.2测试 (8)6结论 (9)结束语 (9)参考文献 (9)附录1-用户手册 (10)附录2-源程序 (12)摘要随着生活水平的提高,现代科技也日益发达。

日常生活中多位计算再所难免,因此设计一个简单计算器可解决许多不必要的麻烦。

开发这样一个程序主要运用了C的结点,链表等方面知识。

系统主要实现了多项式的建立,多项式的输入输出,以及多项式加减乘等运算。

报告主要从计算器的程序段,对输入输出数据的要求,计算器的性能,以及总体的设计来介绍此计算器程序的实现过程。

关键词:多项式;链表;结点1绪论随着日益发达的科技,计算器已应用于各行各业。

设计一个计算器需要运用C中多方面知识,更是以多项式的建立,输入输出,以及结点,链表为主。

(扩充)任务书。

2系统分析2.1 功能需求多项式的建立多项式输入输出多项式加减乘等运算2.2数据需求在输入过程中,首先要确定输入的数据,数据不能是字母,只能是数字。

不能连续输入数据,必须按要求配以空格输入要计算的数据。

(1) 链节节点数字(2) 数字2.3 性能需求系统必须安全可靠,不会出现无故死机状态,速度不宜过慢。

3总体设计3.1系统设计方案采用菜单设计,选择你需要的功能,用单链表储存你输入的数据。

(1) 菜单菜单包括计算器加减乘等功能的选择(2) 文件保存方式运用带头节点的单链表储存多项式(3) 抽象数据类型定义主要定义多项式的系数和指数。

系数项用浮点类型定义,指数项用整型定义(4) 存储结构采用链式结构,建立链表储存输入的多项式(5) 算法设计运用链表知识,建立链表,给链表分配一定量的存储空间,查找链表,插入链表和链表的连接3.2功能模块设计图1功能模块图(1)建立多项式模块该模块分为①建立多项式②输入多项式(2)多项式相加模块该模块是将输入的多项式实现相加功能。

(3)多项式相减模块该模块是将输入的多项式实现相减功能。

(4)多项式相乘模块该模块是将输入的多项式实现相乘功能。

4详细设计一元多项式计算器主要分为4大部分,多项式建立,多项式加法,多项式减法和多项式乘法。

多项式的建立主要需要建立新链表,并分配给这个新链表一定量的存储空间,分配的存储空间内进行运算;多项式加减乘等运算主要运用了链表的建立,链表存储空间分配,链表的查找,插入与连接进行计算。

4.1 建立多项式此阶段是多项式的建立,可以对计算器进行输入,输出等功能。

主要运用链表方面的知识如图2所示。

N图2多项式建立4.2多项式相加此阶段是计算器的加法运用功能,对你输入的多项式进行相加计算,主要运用了链表,及链表的插入等知识,如图3所示。

图3多项式相加4.3多项式相减此阶段是计算器的减法运用功能,对你输入的多项式进行相减计算,主要运用了链表,链表查询,及链表的插入等知识,如图4所示。

图4多项式相减4.4多项式相乘此阶段是计算器的乘法运用功能,对你输入的多项式进行相乘计算,主要运用了链表,链表查询,及链表的插入等知识,如图5所示。

图5多项式相乘4.5计算器主函数此阶段是计算器的功能选择,对你要进行的操作选择相应的程序,主要运用了链表,链表查询,链表连接及链表的插入等知识,如图6所示。

图6计算器主函数5调试与测试5.1 调试调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。

本系统调试过程中遇到的主要问题、原因和解决方法如下面介绍。

(1)系统提示的错误error C2065: 'addPLOY' : undeclared identifieraddPLOY没有被明确的定义。

到程序段里仔细寻找addPLOY,并将其定义。

(2)cannot open Debug/Cpp1.exe for writing执行窗口没关闭就修改程序段关闭只胸窗口后从新执行程序。

5.2 测试软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。

或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。

过度测试则会浪费许多宝贵的资源。

到测试后期,即使找到了错误,然而付出了过高的代价。

测试数据过程如下。

(1)输入功能测试输入数据1:2 3 0 0预期结果:2.000000x^3运行结果: 2.000000x^3说明:符合输入的要求输入数据2:a b 0 0预期结果:a.000000x^b运行结果:死循环说明:不符合输入要求(2)运算功能测试输入数据1:2 3 0 0 3 4 0 0预期结果:2.000000x^3+3.000000x^4运行结果:2.000000x^3+3.000000x^4说明:符合计算的要求输入数据2:a b 0 0 c d 0 0预期结果:a.000000x^b+c.000000x^d运行结果:死循环6结论经过一段时间的设计,我的程序大体完成,基本上能实现任务书中的要求,但程序还存在一些缺点。

例如,无法输入字母计算,无法进行多项连续计算。

结束语经过两周的课程设计,我深刻的体会到了数据结构的重要性。

例如,生活中常常需要多位计算,而编一个简易的计算器会帮你节省许多时间。

因此,学好数据结构练好编程,会帮你解决许多生活实际问题。

这两周的课设生活更坚定了我学好数据结构的决心。

参考文献[1] 谭浩强.C语言程序设计(第三版).清华大学出版社,2007[2] 姜灵芝,余健.C语言课程设计案例精编.清华大学出版社,2008[3] 网上相关资料[4]严蔚敏,吴伟民。

数据结构(C语言版)[5]李健学,余健。

数据结构课程设计案例精编,2007附录1-用户手册点击运行,首先出现的是功能选择界面,选择你需要的功能,输入正确的编号即可,如图7所示。

图7功能选择界面输入1,进入多项式相加界面,如图8所示。

图8多项式相加界面在此界面按照系数指数的顺序输入多项式实现多项式的相加,并以0 0结束。

输入2,进入多项式相乘界面,如图9所示。

图9多项式相乘界面在此界面按照系数指数的顺序输入多项式实现多项式的相乘,并以0 0结束。

输入3,进入多项式相减界面,如图10所示。

图10多项式相减界面在此界面按照系数指数的顺序输入多项式实现多项式的相减,并以0 0结束。

附录2-源程序#include<stdio.h>#include<malloc.h>typedef struct node{float coef;int expn;struct node * next;}PLOY;void start()//用户选择界面{printf("************************************\n");printf(" 两个一元多项式的相加/相减/相乘\n");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;if(pre->next==NULL) {pre->next=inpt;}else {now=pre->next;while(signal==0){if(inpt->expn<now->expn){if(now->next==NULL){now->next=inpt;signal=1;}else{pre=now;now=pre->next;}}elseif(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);}}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);}}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);}return res;}void print(PLOY *fun){PLOY *printing;int flag=0;printing=fun->next;if(fun->next==NULL){printf("0\n");return;}while(flag==0){if(printing->coef>0&&fun->next!=printing)printf("+");if(printing->coef==1);else if(printing->coef==-1)printf("-");elseprintf("%f",printing->coef);if(printing->expn!=0) printf("x^%d",printing->expn); else if((printing->coef==1)||(printing->coef==-1)) printf("1");if(printing->next==NULL)flag=1;elseprinting=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');printf("f(x)=");print(f);g=creat('g');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');printf("f(x)=");print(f);g=creat('g');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');printf("f(x)=");print(f);g=creat('g');printf("g(x)=");print(g);printf("F(x)=f(x)-g(x)=");f=minusPLOY(f,g);print(f);sign=-1;start();break;}case 4:{sign=-1;start();break;}default:{printf("输入有误!请重新选择操作!\n"); start();break;}}}printf("谢谢使用!\n");完成日期:****年**月**日。

相关文档
最新文档