




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告1. 需求分析【问题描述】设计一个一元稀疏多项式简单计算器.【基本要求】一元稀疏多项式基本功能包括:1) 输入并建立多项式;2) 输出多项式, 输出形式为整数序列: n, c1, e1 , c2, e2, , cn, en,其中 n 是多项式的项数, ci 和 ei 分别是第 i 项的系数和指数,序列按指数降序排列;3)多项式 a 和 b 相加,建立多项式a+b;4)多项式 a 和 b 相减,建立多项式a-b;【测试数据】1) (2x+5x 8-3.1x 11)+(11x 9-5x8+7)=(-3.1x 11+11x8+2x+7)2) (-1.2x 9+6x -3 +4.4x2 -
2、x)-(7.8x 15+4.4x 2-6x-3 )=(-7.8x 15-1.2x 9+12x -3-x)3) (x5+x 4+x3 +x2+x+1)-(-x 4-x3)=(x 5+x 2+x+1)4) (x3+x)-(-x 3-x)=05) (x100+x)+(x 200 +x 100)=(x 200+2x 100+x)6) (x3+x 2+x)+0=x 3+x 2+x7) 互换上述测试数据中的前后两个多项式.2. 概要设计ADT Polynomial数据对象 : D=a ii,m,m 0,TermSet 中的每个元素包含一个表示系|a TermSet, i=1,2,数的实数和表示指数的整数
3、数据对象 : R1=|ai,ai-1 D,且 ai-1中的指数值小于 ai 中的指数 ,i=2,m基本操作:CreatePolyn(void)Result: 指数由大到小输入 m 项的系数和指数 ,建立一元多项式pPrintPoly(LNode Head)Result: 输出一元多项式AddPoly (LNode H1,LNode H2)Condition: 一元多项式 pa,pb 已存在Result: 完成多项式相加运算 ,即 pa=pa+pb,并销毁一元多项式pb.SubtractPoly(LNode H1,LNode H2)Condition: 一元多项式 pa,pb 已存在Result
4、: 完成多项式相减运算 ,即 pa=pa-pb,并销毁一元多项式pb.ADT Polynomial3. 详细设计【数据类型定义】typedef struct nodeint expn,coef;struct node *next;Nodetype,*LNode;/定义结点类型【函数原型定义】LNode CreatePolyn(void);Void PrintPoly(LNode Head);LNode AddPolyn(LNode H1,LNode H2);LNode SubPolyn(LNode H1,LNode H2);【核心算法描述】CreatePolyn()LNode CreatePo
5、lyn(void)/ 创建表达式LNode Head,p,pre,pree;int x,z;Head=(LNode)malloc(sizeof(Nodetype);Head-next=NULL;printf( 当你输入的系数为0 时,输入将结束!n);printf( 请输入第一项系数:);scanf(%d,&x);if(x=0)p=(LNode)malloc(sizeof(LNode);p-coef=0;p-expn=0;Head-next=p;p-next=NULL;while(x!=0)printf( 请输入指数 :);scanf(%d,&z);p=(LNode)malloc(sizeof
6、(Nodetype);p-coef=x;p-expn=z;pre=Head;while(pre-next&pre-next-expn=z)/原有项指数大于插入项pree=pre;pre=pre-next;p-next=pre-next;/ 插入项pre-next=p;if(pre-expn=p-expn)/ 原有项指数等于插入项pre-coef+=p-coef;pre-next=p-next;free(p);if(pre-coef=0)/ 系数为 0pree-next=pre-next;free(pre);printf( 请输入系数 :);scanf(%d,&x);if(Head-next=N
7、ULL)/多项式空pre=(LNode)malloc(sizeof(LNode);pre-coef=0;pre-expn=0;pre-next=Head-next;Head-next=pre;return Head;PrintPolyn()void PrintPolyn(LNode Head)/ 输出表达式LNode pre;pre=Head-next;if(pre-expn=0)/ 指数为 0printf(%d,pre-coef);elseprintf(%d*X(%d),pre-coef,pre-expn);pre=pre-next;while(pre)/ 系数不为0if(pre-expn=
8、0)/ 指数为 0if(pre-coef0)printf(+%d,pre-coef);else if(pre-coefcoef);else/指数不为0if(pre-coef0)printf(+%d*X(%d),pre-coef,pre-expn);else if(pre-coefcoef,pre-expn);pre=pre-next;/ 遍历每一项printf(n);AddPolyn()LNode AddPolyn(LNode H1,LNode H2)/ 表达式相加LNode H3,p1,p2,p3,pre;/p1第一个多项式的项,prep 的前一项H3=(LNode)malloc(sizeo
9、f(LNode);H3-next=NULL;/ 建立一个空的多项式p1=H1-next;/第一个多项式的第一项p2=H2-next;pre=H3;/while(p1&p2)if(p1-expnp2-expn)/ 第一个多项式的项的指数大于第二个的p3=(LNode)malloc(sizeof(LNode);p3-expn=p1-expn;p3-coef=p1-coef;p3-next=pre-next;pre-next=p3;pre=p3;p1=p1-next;else if(p1-expnexpn)/ 第一个多项式的项的指数小于第二个的p3=(LNode)malloc(sizeof(LNod
10、e);p3-expn=p2-expn;p3-coef=p2-coef;p3-next=pre-next;pre-next=p3;pre=p3;p2=p2-next;else if(p1-coef+p2-coef!=0)/相加为不 0,指数相同系数相加p3=(LNode)malloc(sizeof(LNode);p3-expn=p1-expn;p3-coef=p1-coef+p2-coef;p3-next=pre-next;pre-next=p3;pre=p3;p1=p1-next;p2=p2-next;else/相加为 0p1=p1-next;p2=p2-next;while(p2)p3=(L
11、Node)malloc(sizeof(LNode);p3-expn=p2-expn;p3-coef=p2-coef;p3-next=pre-next;pre-next=p3;pre=p3;p2=p2-next;while(p1)p3=(LNode)malloc(sizeof(LNode);p3-expn=p1-expn;p3-coef=p1-coef;p3-next=pre-next;pre-next=p3;pre=p3;p1=p1-next;return H3;Substract()LNode SubstractPolyn(LNode H1,LNode H2)/ 表达式相减/ 让系数变负,代入加法LNode H3,pre;pre=H2-next;while(pre)pre-coef=-pre-coef;pre=pre-next;H3=AddPolyn(H1,H2);pre=H2-next;while(pre)pre-coef=-pre-coef;pre=pre-next;return H3;【函数调用关系】main()调用 CreatePoly(),PrintPoly(),AddPoly(),scanf()函数输入, printf()函数输出。4. 运行记录5. 总结首次做课程设计的题目,小激动,小紧张,编程的基础比较差,所以把第二章学习的内容仔仔细
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二年级公共安全行为规范计划
- 光伏电站土建施工危险点识别及管理措施
- 高校学生干部个人学历情况说明范文
- 幼儿园园长2025年节能环保工作总结及行动计划
- 妇产科护士长岗位职责管理
- 融资租赁公司不良清收处置计划
- 珠宝门店人员培训计划
- 以形助数以数解形:高中数学数形结合解题教学的深度剖析与实践
- 以平衡计分卡重塑C银行客服中心绩效体系:设计、应用与革新
- 以学案为翼助力高中数学教学腾飞-基于多校实践的深度剖析
- 电瓶车抵押给个人合同(2篇)
- 中国硫氰酸红霉素市场供需现状及投资战略研究报告
- (一模)乌鲁木齐地区2025年高三年级第一次质量英语试卷(含答案)
- GB/T 6822-2024船体防污防锈漆体系
- 社会调查研究与方法-001-国开机考复习资料
- 2024年六西格玛绿带认证考试练习题库(含答案)
- 菏泽学院社会心理学(专升本)复习题
- 实验室改造施工合同
- 2024敬老院护理经理聘任协议
- 人工智能语言与伦理学习通超星期末考试答案章节答案2024年
- 2024年部编版九年级语文上册电子课本(高清版)
评论
0/150
提交评论