




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.课题描述 这个程序设计了对一元多项式的加减乘法运算,输入和输出一元多项式,运算一元多项式的和以及一元多项式的差还有一元多项式的乘积并输出。一元多项式的表示在计算机内可以用链表来表示,链表中的每一个结点存放多项式的一个系数非零项,它包含三个域,分别存放该项的系数、指数以及指向下一个多项式项结点的指针。创建一元多项式链表,对一元多项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减,相乘操作。需求分析一元多项式算法程序主要从技术的角度来分析可行性。技术上的可行性研究要分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。该系统采用了Windows
XP操作系统结合Visual
C++
6.0、TC
2.0等软件开发平台已成熟可行。硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,其硬件平台也比较能满足此系统的需要。此外,还有经济可行性,用户使用可行性,法律可行性等可行性研究,这里从简省去。
3.概要设计 一元多项式的表示在计算机内可以用链表来表示,为了节省存储空间,只存储多项式中系数非零的项。链表中的每一个结点存放多项式的一个系数非零项,它包含三个域,分别存放该项的系数、指数以及指向下一个多项式项结点的指针。创建一元多项式链表,对一元多项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减操作。4.详细设计一元多项式的创建 建立一元多项式的链表,按程序提示输入一元多项式的项数,以及一元多项式的系数与指数,对一元多项式中会出现的各种情况进行分析,实现对一元多项式的加减法操作。开始开始申请结点空间num输入多项式的项数指针数组temp[i]中(i=1~num)输入多项式各项的系数x,指数y输出已输入的多项式合并同类项结束否是是否输入正确一元多项式的创建流程图一元多项式的加法 对于一元多项式中指数相同的项,对应系数相加,若得到的和不为0,则作为“和多项式”中的一项,对于两个一元多项式所有指数不相同的项,直接复抄到“和多项式”中。开始开始定义存储结果的空链r是否输出存储多项式的和的链r结束是否同指数项系数相加后存入r中直接把p中各项存入r中直接把q中各项存入r存储多项式2的空链Q是否为空存储多项式1的空链P是否为空合并同类项一元多项式加法流程图一元多项式的减法 对于一元多项式中指数相同的项,对应系数相减,若得到的差不为0,则作为“和多项式”中的一项,对于一元多项式指数不相同的项,按减法法则直接复抄到“和多项式”中。开始开始定义存储结果的空链r是否输出存储多项式的和的链r结束是否同指数项系数相加后存入r中把p中各项系数改变符号后存入r直接把q中各项存入r存储多项式2的空链Q是否为空存储多项式1的空链P是否为空合并同类项一元多项式减法流程图5.程序编码对于一元多项式的编码实现,首先实现一元多项式的建立,输入,输出,求和,求差,求积的算法,最后用主函数调用子函数,实现完整编码。#include<stdio.h>#include<iostream>usingnamespacestd;#defineN1000#defineINF65535typedefstruct{inta[N];//记录多项式intlen;//记录多项式的长度}Ploy;voidADD(PloyA,PloyB,Ploy*M)/*多项式A与多项式B相加,得到多项式M*/{intla=A.len,lb=B.len; inti;M->len=la>lb?la:lb;//若la>lb则输出la否则输出lbfor(i=0;i<=la&&i<=lb;i++){M->a[i]=A.a[i]+B.a[i];}while(i<=la){M->a[i]=A.a[i];i++;}while(i<=lb){M->a[i]=B.a[i];i++;}return;}voidSUB(PloyA,PloyB,Ploy*M)/*多项式A与多项式B相减(A-B),得到多项式M*/{intla=A.len,lb=B.len,i;M->len=la>lb?la:lb;for(i=0;i<=la&&i<=lb;i++){M->a[i]=A.a[i]-B.a[i];}while(i<=la){M->a[i]=A.a[i];i++;}while(i<=lb){M->a[i]=0-B.a[i];i++;}return;}voidMUL(PloyA,PloyB,Ploy*M)/*多项式A与多项式B相乘,得到多项式M*/{inti,j;for(i=0;i<=A.len+B.len+1;i++)M->a[i]=0;for(i=0;i<=A.len;i++)for(j=0;j<=B.len;j++){M->a[i+j]+=A.a[i]*B.a[j];}M->len=A.len+B.len;return;}voidGetPloy(Ploy*A)//输入建立多项式{inti,coef,expn; intmaxe=0;charch;printf("请输入每个项的系数及对应的指数,指数为负数时标志输入结束!\n");for(i=0;i<N;i++)A->a[i]=0;scanf("%d%d",&coef,&expn);while(expn>=0){if(expn>maxe)maxe=expn;if(A->a[expn]!=0){printf("你输入的项已经存在,是否更新原数据?(Y/N)");cin>>ch;if(ch=='Y'||ch=='y'){A->a[expn]=coef;printf("更新成功,请继续输入!\n");}elseprintf("请继续输入!\n");;}elseA->a[expn]=coef;scanf("%d%d",&coef,&expn);}A->len=maxe;return;}voidPrintPloy(PloyA)//按降幂排序输出多项式{inti;printf("%dx^%d",A.a[A.len],A.len);for(i=A.len-1;i>=1;i--){if(A.a[i]==0);elseif(A.a[i]==1)printf("+x^%d",i);elseif(A.a[i]==-1)printf("-x^%d",i);else{if(A.a[i]>0)printf("+%dx^%d",A.a[i],i);elseprintf("-%dx^%d",-A.a[i],i);}}if(A.a[0]==0);elseif(A.a[0]>0)printf("+%d",A.a[0]);//打印x的0次项elseprintf("-%d",-A.a[0]);printf("\n");return;}voidMenu(){printf("\n**1、多项式相加");printf("\n**2、多项式相减"); printf("\n**3、多项式相乘"); printf("\n**4、退出***\n");printf("请输入您需要的操作\n");return;}intmain(){PloyA,B,M;charn,ch,sh;printf("请输入多项式A:\n");GetPloy(&A);printf("请输入多项式B:\n");GetPloy(&B);while(1){Menu();cin>>n;while(2){if(n=='1'){ADD(A,B,&M);PrintPloy(M);break;}elseif(n=='2'){SUB(A,B,&M);PrintPloy(M);break;}elseif(n=='3'){MUL(A,B,&M); PrintPloy(M);break;}elseif(n=='4'){break;}else{printf("输入的选项号不对,请重新输入\n");break;}}}return0;}6.程序结果一元多项式建立与相加输出结果展一元多项式相减并输出结果展示图一元多项式相乘并输出结果展示图7.结果分析 问题和改进思想:在开始设计程序的时候,输出结果很乱,并且容易出现逻辑错误。然后在编写输出多项式的函数时,建立了一个按升序输出的函数,才把程序改好。建立输入多项式的函数时,以指数为负数标志输出结束。建立时还会出现一个问题,就是输入时会输入重复的指数的项,这时计算机就会提醒用户是否更新数据。开始的时候没有注意这个问题,输入数据时会出错,导致程序运行时会出现逻辑混乱错误。后来才改好了。以后会多注意这些问题。8.总结在此次课程设计中,运用VC++软件编程,学习到了很多知识,不仅巩固了以前的知识,还掌握
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 货物运费合同协议
- 面料补充合同协议
- 配电设备合同协议
- 全国川教版信息技术七年级上册第7课《多媒体计算机》教学设计
- 三年级上册道德与法治教学设计-2.2拿到学习的“金钥匙”第三课时 桂师星球版
- 七年级语文上册 第四单元 写作 思路要清晰教学设计 新人教版
- 卫生管理职业技能要求与标准试题及答案
- 人人都能掌握的文化产业管理考试试题及答案
- 护理学知识体系构建试题及答案
- 农艺师试题及答案
- JTG-T-D33-2012公路排水设计规范
- 2024光伏电站索悬柔性支架施工方案
- GJB9001C-2017管理手册、程序文件及表格汇编
- 2024年山东省庆云县九年级第一次练兵考试数学试题
- 【高中语文】《秦腔》说课课件++统编版高中语文选择性必修下册
- 河北省石家庄市桥西区第四十一中学2022-2023学年七年级下学期期中数学试卷
- 安庆铜矿选矿工艺
- 新能源汽车在政府采购领域中的推广与应用
- 《宇航服知识》课件
- 案例沃尔玛的风险管理(风险评估、应对)
- 投资金融公司春节安全生产培训 加强数据安全保障
评论
0/150
提交评论