版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告1 .需求分析【问题描述】设计一个一元稀疏多项式简单计算器.【基本要求】一元稀疏多项式基本功能包括:1) 输入并建立多项式;2)输出多项式,输出形式为整数序列:n,ci,ei,c2,e2,,cn,en,其中n是多项式的项数,g和e分别是第i项的系数和指数,序列按指数降序排列;2) 多项式a和b相力口,建立多项式a+b;3) 多项式a和b相减,建立多项式a-b;【测试数据】4) (2x+5x8-3.1x11)+(11x9-5x8+7)=(-3.1x11+11x8+2x+7)5) (-1.2x9+6x3+4.4x2-x)-(7.8x15+4.4x2-6x-3)=(-7.8x15-1.2
2、x9+12x3-x)6) (x5+x4+x3+x2+x+1)-(-x4-x3)=(x5+x2+x+1)7) (x3+x)-(-x3-x)=08) (x100+x)+(x200+x100)=(x200+2x100+x)9) (x3+x2+x)+0=x3+x2+x7)互换上述测试数据中的前后两个多项式.2 .概要设计ADTPolynomial数据对象:D=ai|ai?TermSet,i=1,2,m,m>0,TermSet中的每个元素包含一个表示系数的实数和表示指数的整数数据对象:R1=<ai,ai-1>|ai,ai-1?D,且ai-1中的指数值小于ai中的指数,i=2,m基本操作
3、:CreatePolyn(void)Result:指数由大到小输入m项的系数和指数,建立一元多项式pPrintPoly(LNodeHead)Result:输出一元多项式AddPoly(LNodeH1,LNodeH2)Condition:元多项式pa,pb已存在Result:完成多项式相加运算,即pa=pa+pb,并销毁一元多项式pb.SubtractPoly(LNodeH1,LNodeH2)Condition:一元多项式pa,pb已存在Result:完成多项式相减运算,即pa=pa-pb,并销毁一元多项式pb.ADTPolynomial3 .详细设计【数据类型定义】typedefstructn
4、odeintexpn,coef;structnode*next;Nodetype,*LNode;/定义结点类型【函数原型定义】LNodeCreatePolyn(void);VoidPrintPoly(LNodeHead);LNodeAddPolyn(LNodeH1,LNodeH2);LNodeSubPolyn(LNodeH1,LNodeH2);【核心算法描述】CreatePolyn()LNodeCreatePolyn(void)/创建表达式LNodeHead,p,pre,pree;intx,z;Head=(LNode)malloc(sizeof(Nodetype);Head->next=
5、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(Nodetype);
6、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)/系数为0(pree-&g
7、t;next=pre->next;free(pre);)printf("请输入系数:");scanf("%d",&x);)if(Head->next=NULL)/多项式空(pre=(LNode)malloc(sizeof(LNode);pre->coef=0;pre->expn=0;pre->next=Head->next;Head->next=pre;)returnHead;)PrintPolyn()输出表达式voidPrintPolyn(LNodeHead)/(LNodepre;pre=Head-&g
8、t;next;if(pre->expn=0)/指数为0printf("%d",pre->coef);elseprintf("%d*X(%d)",pre->coef,pre->expn);pre=pre->next;while(pre)/系数不为0(if(pre->expn=0)/指数为0(if(pre->coef>0)printf("+%d",pre->coef);elseif(pre->coef<0)printf("%d",pre->coef
9、);)else/指数不为0(if(pre->coef>0)printf("+%d*X(%d)",pre->coef,pre->expn);elseif(pre->coef<0)printf("%d*X(%d)",pre->coef,pre->expn);)pre=pre->next;/遍历每一项)printf("n");AddPolyn()LNodeAddPolyn(LNodeH1,LNodeH2)/表达式相加(LNodeH3,p1,p2,p3,pre;/p1第一个多项式的项,pr
10、ep的前一项H3=(LNode)malloc(sizeof(LNode);H3->next=NULL;/p1=H1->next;/p2=H2->next;pre=H3;/while(p1&&p2)(if(p1->expn>p2->expn)/建立一个空的多项式第一个多项式的第一项第一个多项式的项的指数大于第二个p3=(LNode)malloc(sizeof(LNode);p3->expn=p1->expn;p3->coef=p1->coef;p3->next=pre->next;pre->next=p
11、3;pre=p3;p1=p1->next;elseif(p1->expn<p2->expn)/第一个多项式的项的指数小于第二个的p3=(LNode)malloc(sizeof(LNode);p3->expn=p2->expn;p3->coef=p2->coef;p3->next=pre->next;pre->next=p3;pre=p3;p2=p2->next;)elseif(p1->coef+p2->coef!=0)/相加为不0,指数相同系数相加p3=(LNode)malloc(sizeof(LNode);p
12、3->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/相加为0(p1=p1->next;p2=p2->next;)while(p2)(p3=(LNode)malloc(sizeof(LNode);p3->expn=p2->expn;p3->coef=p2->coef;p3->next=pre->next;pre->
13、next=p3;pre=p3;p2=p2->next;)while(pl)(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;)returnH3;)Substract()表达式LNodeSubstractPolyn(LNodeH1,LNodeH2)/相减/让系数变负,代入加法LNodeH3,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;)returnH3;)【函数调用关系】main()调用CreatePoly(),PrintPoly(),AddPoly(),scanf()函数输入,printf()函数输出。4 .运行记录5 .总结首次做课程设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房地产企业股权转让专项法律合同
- 针对中小企业的借款合同样本
- 高效节能建筑绿色环保技术推广使用合同
- SMO推广服务合同
- 合同规章制度
- 高代中合同的定义
- 钢材采购合同风险防范
- 汽车回租租赁合同模板
- 融资租赁合同准则
- 企业买卖合同目录模板
- Unit 6 My sweet home(教学设计)-2024-2025学年外研版(三起)(2024)小学英语三年级上册
- 北师大版教案正比例函数案例分析
- 行政文秘笔试题
- 人教版(2024)七年级地理上册跨学科主题学习《探索外来食料作物传播史》精美课件
- 2024-2025学年七年级数学上册第一学期 期末模拟测试卷(湘教版)
- 职业素质养成(吉林交通职业技术学院)智慧树知到答案2024年吉林交通职业技术学院
- 《红楼梦》第5课时:欣赏小说人物创作的诗词(教学教学设计)高一语文同步备课系列(统编版必修下册)
- 【新教材】苏科版(2024)七年级上册数学第1-6章全册教案设计
- 天津2024年天津市应急管理局招聘应急管理综合行政执法专职技术检查员笔试历年典型考题及考点附答案解析
- 工业物联网(IIoT)行业发展全景调研与投资趋势预测研究报告
- 佛山市、三水区2022-2023学年七年级上学期期末地理试题【带答案】
评论
0/150
提交评论