




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计学 院: 信息科学与工程学院专 业: 计算机科学与技术班 级: 计算机1006班学 号: 20101221001学生姓名: 安冬指导教师: 王永燕2012 年 3 月 12 日目录一、 实验题目的描述与要求1二、 总体设计及环境说明、工具等1三、 详细设计:本题所需数据结构与模块说明1四、 调试过程、测试数据、运行结果及对结果的分析等6五、 自我评析与总结7六、 程序代码7数据结构课程设计一、实验题目的描述与要求建立一元多项式并按照指数降序排列输出多项式,将一元多项式输入并存储在内存中,能够完成两个多项式的加减运算并输出结果一元稀疏多项式简单计算器的功能是:1.输入并建立多项式;2.输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列; 3.求多项式a、b的导函数;4.计算多项式在x处的值;5.多项式a和b相加,建立多项式a+b;6.多项式a和b相减,建立多项式a-b;7.多项式a和b相乘,建立多项式a*b;8.仿真界面。二、总体设计及环境说明、工具等 三、详细设计:本题所需数据结构与模块说明存储结构:一元多项式的表示在计算机内可以用链表来表示,为了节省存储空间,只存储多项式中系数非零的项。链表中的每一个结点存放多项式的一个系数非零项,它包含三个域,分别存放该项的系数、指数以及指向下一个多项式项结点的指针。创建一元多项式链表,对一元多项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减操作。typedef struct Polynomial /定义多项式的项 float coef;/系数 int expn;/指数 struct Polynomial *next;*Polyn,Polynomial;1、a+b:构造新的一个多项式pc,不断调用Insert(pc,hdc)函数,在这个过程中就已经对多项式进行了加法运算。Polyn AddPolyn(Polyn pa,Polyn pb)/加法运算Polyn pc,hdc,q1=pa-next,q2=pb-next; hdc=(Polyn)malloc(sizeof(struct Polynomial);hdc-next=NULL;while(q1) pc=(Polyn)malloc(sizeof(struct Polynomial); pc-coef=q1-coef;pc-expn=q1-expn;Insert(pc,hdc); /插入结点q1=q1-next;while(q2)pc=(Polyn)malloc(sizeof(struct Polynomial); pc-coef=q2-coef;pc-expn=q2-expn;Insert(pc,hdc); /插入结点q2=q2-next;return hdc;2、a-b:减法运算本身就是加法运算,只要把pb的系数取负即可,然后再调用加法运算函数。Polyn UnaddPolyn(Polyn pa,Polyn pb)Polyn h=pb,q=pb-next,pd; while(q)/把pb变成-pb q-coef=q-coef*(-1); q=q-next; pd=AddPolyn(pa,h); for(q=h-next;q;q=q-next) /变回来 q-coef*=-1; return pd;3、ab:Polyn ChengPolyn(Polyn pa,Polyn pb)Polyn hf,pf; Polyn qa=pa-next; Polyn qb=pb-next; hf=(Polyn)malloc(sizeof(struct Polynomial);/建立头结点 hf-next=NULL; for(;qa;qa=qa-next) for(qb=pb-next;qb;qb=qb-next) pf=(Polyn)malloc(sizeof(struct Polynomial); pf-coef=qa-coef*qb-coef; pf-expn=qa-expn+qb-expn; Insert(pf,hf);/调用Insert函数以合并指数相同的项 return hf;四调试过程、测试数据、运行结果及对结果的分析等测试数据:1、(2x+5x8-3.1x11)+(7-5x8+11x9)=(-3.1x11+11x9+2x+7);2、(6x-3-x+4.4x2-1.2x9+1.2x9)-(-6x-3+5.4x2-x2+7.8x15)=(-7.8x15-1.2x9+12x-3-x);3、(1+x+x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5);4、(x+x3)+(-x-x3)=0;5、(x+x100)+(x100+x200)=(x+2x100+x200);6、(x+x2+x3)+0=x+x2+x3.调试过程:1, 欢迎界面2, 进入主菜单3, 进入多项式计算器:4, 运算a+b:仿真界面并且有清屏5,a-b:6,a*b:7,输入错误出现提示:五自我评析与总结通过这次课程设计,我感觉到要真正做出一个程序并不很容易,但只要用心去做,总会有收获,特别是当我遇到问题,问老师,问同学,想尽办法去解决,最后终于找到方法时,心里的那份喜悦之情真是难以形容.编写程序中遇到问题再所难免,应耐心探究其中的原因,从出现问题的地方起,并联系前后程序,仔细推敲,逐个排查.直到最终搞清为止。 几个注意点:1, 按键输入错误的时候要提示2, 画面仿真效果六、程序代码:/ 计算器.cpp : Defines the entry point for the console application./#include stdafx.h#includestdio.h#includestdlib.h#includeconio.h#includestring.htypedef struct Polynomial /定义多项式的项 float coef;/系数 int expn;/指数 struct Polynomial *next;*Polyn,Polynomial;void menu();/菜单函数void menu1();void main1();void main2();Polyn CreatePolyn(Polyn head,int m);/构造多项式void PrintfPolyn(Polyn pa);/输出多项式void Insert(Polyn p,Polyn head);/插入函数Polyn Derivative(Polyn head);/多项式求导float ValuePolyn(Polyn head,int x);/带入x值计算多项式Polyn AddPolyn(Polyn pa,Polyn pb);/计算a+bPolyn UnaddPolyn(Polyn pa,Polyn pb);/计算a-bPolyn ChengPolyn(Polyn pa,Polyn pb);/计算a*bvoid main()system(color 5E);/设置屏幕背景颜色system(mode con:cols=80 lines=40);/设置屏幕大小printf( 济南大学信息学院计1006班 安冬 20101221001n);getchar();main2();void main2()int c,f;menu1();printf(请选择您要操作的选项:n);c=scanf(%d,&f);/返回值等于获得有效赋值的数据项的数目while(c=0)fflush(stdin);/清除键盘缓冲区printf(输入错误,请正确输入一个整数n);getchar();c=scanf(%d,&f);while(1)switch(f) case 1:main1();break;case 2:exit(0);default:printf(输入错误,请重新输入!n);void main1()int m,n,a,x,l,k,d;Polyn pa=0,pb=0,pc; printf(请输入a的项数:); l=scanf(%d,&m);/返回值等于获得有效赋值的数据项的数目while(l=0)fflush(stdin);/清除键盘缓冲区printf(输入错误,请正确输入一个整数n);getchar();l=scanf(%d,&m);getchar(); pa=CreatePolyn(pa,m);/建立多项式a printf(请输入b的项数:); k=scanf(%d,&n);while(k=0)fflush(stdin);printf(输入错误,请正确输入一个整数n);getchar();k=scanf(%d,&n);getchar(); pb=CreatePolyn(pb,n);/建立多项式bmenu();/菜单int t=1;while(t=1)printf( 请选择您要操作的选项:n);d=scanf(%d,&a); while(d=0)fflush(stdin);printf(输入错误,请正确输入一个整数n); getchar(); d=scanf(%d,&a);switch(a)case 1:system(cls);printf(tt n); printf(tt n); printf(tt 迷你计算器 n); printf(tt n);printf(tt a=);PrintfPolyn(pa);menu();break; case 2:system(cls);printf(tt n); printf(tt n); printf(tt 迷你计算器 n); printf(tt n);printf(tt b=);PrintfPolyn(pb);menu();break; case 3:system(cls);printf(tt n); printf(tt n); printf(tt 迷你计算器 n); printf(tt n);printf(tt a=);PrintfPolyn(pc=Derivative(pa);menu();break; case 4:system(cls); printf(tt n); printf(tt n); printf(tt 迷你计算器 n); printf(tt n);printf(tt b=);PrintfPolyn(pc=Derivative(pb);menu();break;case 5:system(cls);int l;printf(请输入x的值:n);l=scanf(%d,&x); while(l=0)fflush(stdin);printf(输入错误,请正确输入一个整数n); getchar(); l=scanf(%d,&x); printf(ttn); printf(tt n); printf(tt 迷你计算器 n); printf(tt n);printf(tt a=);printf(%fn,ValuePolyn(pa,x);printf(tt n); printf(tt n); printf(tt n); printf(tt n); printf(tt 7 8 9 + n); printf(tt n); printf(tt n); printf(tt 4 5 6 - n); printf(tt n); printf(tt n); printf(tt 1 2 3 * n); printf(tt n); printf(tt n); printf(tt 0 = . / n); printf(tt n); printf(tt n); printf(tt n);getchar();menu();break;case 6:system(cls);int k;printf(请输入x的值:n);k=scanf(%d,&x); while(k=0)fflush(stdin);printf(输入错误,请正确输入一个整数n); getchar(); k=scanf(%d,&x);printf(tt n); printf(tt n); printf(tt 迷你计算器 n); printf(tt n);printf(tt b=);printf(%fn,ValuePolyn(pb,x);printf(tt n); printf(tt n); printf(tt n); printf(tt n); printf(tt 7 8 9 + n); printf(tt n); printf(tt n); printf(tt 4 5 6 - n); printf(tt n); printf(tt n); printf(tt 1 2 3 * n); printf(tt n); printf(tt n); printf(tt 0 = . / n); printf(tt n); printf(tt n); printf(tt n);getchar();menu();break;case 7:system(cls); printf(tt n); printf(tt n); printf(tt 迷你计算器 n); printf(tt n);printf(tt a+b=);PrintfPolyn(AddPolyn(pa,pb);menu();break;case 8:system(cls);printf(tt n); printf(tt n); printf(tt 迷你计算器 n); printf(tt n);printf(tt a-b=);PrintfPolyn(UnaddPolyn(pa,pb);menu();break;case 9:system(cls);int j;printf(请输入x的值:n);j=scanf(%d,&x); while(j=0)fflush(stdin);printf(输入错误,请正确输入一个整数n); getchar(); j=scanf(%d,&x);printf(tt n); printf(tt n); printf(tt 迷你计算器 n); printf(tt n);printf(tt a+b=);printf(%fn,ValuePolyn(AddPolyn(pa,pb),x);printf(tt n); printf(tt n); printf(tt n); printf(tt n); printf(tt 7 8 9 + n); printf(tt n); printf(tt n); printf(tt 4 5 6 - n); printf(tt n); printf(tt n); printf(tt 1 2 3 * n); printf(tt n); printf(tt n); printf(tt 0 = . / n); printf(tt n); printf(tt n); printf(tt n);getchar();menu();break;case 10:system(cls);int o;printf(请输入x的值:n);o=scanf(%d,&x); while(o=0)fflush(stdin);printf(输入错误,请正确输入一个整数n); getchar(); o=scanf(%d,&x);printf(tt n); printf(tt n); printf(tt 迷你计算器 n); printf(tt n);printf(tt a-b=);printf(%fn,ValuePolyn(UnaddPolyn(pa,pb),x);printf(tt n); printf(tt n); printf(tt n); printf(tt n); printf(tt 7 8 9 + n); printf(tt n); printf(tt n); printf(tt 4 5 6 - n); printf(tt n); printf(tt n); printf(tt 1 2 3 * n); printf(tt n); printf(tt n); printf(tt 0 = . / n); printf(tt n); printf(tt n); printf(tt n);getchar();menu();break;case 11:system(cls);printf(tt n); printf(tt n); printf(tt 迷你计算器 n); printf(tt n);printf(tt a*b=);PrintfPolyn(ChengPolyn(pa,pb);menu();break;case 12:system(cls); int t;printf(请输入x的值:n);t=scanf(%d,&x); while(t=0)fflush(stdin);printf(输入错误,请正确输入一个整数n); getchar(); t=scanf(%d,&x);printf(tt n); printf(tt n); printf(tt 迷你计算器 n); printf(tt n);printf(tt a-b=);printf(%fn,ValuePolyn(ChengPolyn(pa,pb),x);printf(tt n); printf(tt n); printf(tt n); printf(tt n); printf(tt 7 8 9 + n); printf(tt n); printf(tt n); printf(tt 4 5 6 - n); printf(tt n); printf(tt n); printf(tt 1 2 3 * n); printf(tt n); printf(tt n); printf(tt 0 = . / n); printf(tt n); printf(tt n); printf(tt n);getchar();menu();break;case 13:system(cls);main2();break; default:printf(tt n); printf(tt n); printf(tt 迷你计算器 n); printf(tt n);printf(tt 请正确输入序号! n );printf(tt n); printf(tt n); printf(tt n); printf(tt n); printf(tt 7 8 9 + n); printf(tt n); printf(tt n); printf(tt 4 5 6 - n); printf(tt n); printf(tt n); printf(tt 1 2 3 * n); printf(tt n); printf(tt n); printf(tt 0 = . / n); printf(tt n); printf(tt n); printf(tt n);getchar();menu();/getchar();void menu()printf(* 一元稀疏多项式计算器*n);printf( 1 输出a 2 输出bn);printf( 3 输出a的导数 4 输出b的导数n);printf( 5 a在x处的值 6 b在x处的值n);printf( 7 输出a+b 8 输出a-bn);printf( 9
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度浙江省二级注册建筑师之法律法规经济与施工高分通关题库A4可打印版
- 股权培训计划方案
- 肿瘤患者饮食营养科学指南
- 幼儿园中层管理者培训课程
- 幼儿心理健康发展指导
- 关于创新的培训
- 华文老师面试题及答案
- 卓越青年领袖培训班
- 成品库保管培训
- 2025年高精度数字测温仪表项目申请报告模板
- 小学生汇报讲课件
- 2025浙江嘉兴市海宁市嘉睿人力招聘5人笔试参考题库附带答案详解析版
- 2025年安徽蚌埠市龙子湖区东方人力资源有限公司招聘笔试参考题库含答案解析
- 党课课件含讲稿:《关于加强党的作风建设论述摘编》辅导报告
- GB/T 19023-2025质量管理体系成文信息指南
- 2025中考历史高频点速记大全
- 2025年特种设备作业人员气瓶充装P证考试题库
- 《智能驾驶辅助系统ADAS》课件
- 2024年自然资源部所属单位招聘笔试真题
- 多余物管理制度
- 2024北京朝阳区三年级(下)期末语文试题及答案
评论
0/150
提交评论