已知稀疏多项式C语言版,一元稀疏多项式计算器C语言课程设计
《一元稀疏多项式计算器C语言课程设计》由会员分享,可在线阅读,更多相关《一元稀疏多项式计算器C语言课程设计(26页珍藏版)》请在人人文库网上搜索。
1、学号2014-2015学年 第二学期1308210115软件工程课程设计报告题目:一元稀疏多项式计算器专业:计算机科学与技术班级:计算机科学与技术(2)班姓名:指导教师:成绩:一、问题描述3二、 需求分析3三、概要设计4四、详细设计5五、 源代码6六 、程序测试18七、 使用说明24八、 课设总结25一、问题描述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;(。
2、5)计算多项式在x处的值。(6)计算器的仿真界面。1.2设计目的数据结构是实践性很强的课程。课程设计是加强学生实践能力的一个强有力手段。课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用二、 需求分析2.1 设计开发环境:软件方面:系统 windows 7 编程软件:VC+ 6.02.2思路分析:一般情况下的一元n次多项式可写成pn(x)=p1xe1+p2xe2+pmxem其中,p1是指数为ei的项的非零系数,且满足0e1#include #include typedef st。
3、ruct Polynomialint coe; /系数int exp;/指数struct Polynomial *next;*Polyn,Polynomial; Polyn ma,mb;void Insert(Polyn p,Polyn h) if(p-coe=0) delete p; elsePolyn q1,q2;q1=h;q2=h-next;while(q2&p-expexp) q1=q2;q2=q2-next;if(q2&p-exp=q2-exp) q2-coe+=p-coe;delete p;if(!q2-coe) q1-next=q2-next;delete q2;else p-n。
4、ext=q2;q1-next=p;Polyn CreatePolyn(Polyn head,int m)int i;Polyn p;p=head=new Polynomial;head-next=NULL;for(i=0;ip-coe;coutp-exp;Insert(p,head);return head;void DestroyPolyn(Polyn p)Polyn t;while(p!=NULL)t=p;p=p-next;delete t;void PrintPolyn(Polyn Pm) Polyn qa=Pm-next; int flag=1;if(!qa) coutcoe0&fla。
5、g!=1) coutcoe!=1&qa-coe!=-1)coutcoe; if(qa-exp=1) coutexp) coutexp;elseif(qa-coe=1)if(!qa-exp) coutexp=1) coutexp;if(qa-coe=-1)if(!qa-exp) coutexp=1) coutexp;qa=qa-next; flag+;coutexpb-exp) return 1;else if(!a|a-expexp) return -1;else return 0;else if(!a&b) return -1;else return 1;Polyn AddPolyn(Pol。
6、yn pa,Polyn pb)Polyn qa=pa-next;Polyn qb=pb-next;Polyn headc,hc,qc;hc=new Polynomial;hc-next=NULL;headc=hc;while(qa|qb)qc=new Polynomial;switch(compare(qa,qb)case 1:qc-coe=qa-coe;qc-exp=qa-exp;qa=qa-next;break;case 0: qc-coe=qa-coe+qb-coe;qc-exp=qa-exp;qa=qa-next;qb=qb-next;break;case -1:qc-coe=qb-c。
7、oe;qc-exp=qb-exp;qb=qb-next;break; if(qc-coe!=0)qc-next=hc-next;hc-next=qc;hc=qc;else delete qc;return headc;Polyn SubtractPolyn(Polyn pa,Polyn pb)Polyn h=pb;Polyn p=pb-next;Polyn pd;while(p) p-coe*=-1;p=p-next;pd=AddPolyn(pa,h);for(p=h-next;p;p=p-next) p-coe*=-1;return pd;Polyn MultiplyPolyn(Polyn 。
8、pa,Polyn pb)Polyn hf,pf;/Polyn qa=pa-next; /新建一个结点作为pa的后继结点Polyn qb=pb-next; /新建一个结点作为pb的后继结点hf=new Polynomial;hf-next=NULL;while(qa)/使用while循环,使得多项式的每项得以运算qb=pb-next;while(qb)pf=new Polynomial;pf-coe=qa-coe*qb-coe;pf-exp=qa-exp+qb-exp;Insert(pf,hf);/调用插入函数,将新的结点插入到新建链表中,并合并同类项qb=qb-next;qa=qa-next;。
9、return hf;/返回所得链表的头指针void DevicePolyn(Polyn pa,Polyn pb) Polyn quotient,remainder,temp1,temp2;Polyn qa=pa-next;Polyn qb=pb-next;quotient=new Polynomial; /建立头结点,存储商quotient-next=NULL;remainder=new Polynomial; /建立头结点,存储余数remainder-next=NULL;temp1=new Polynomial;temp1-next=NULL;temp2=new Polynomial;tem。
10、p2-next=NULL;temp1=AddPolyn(temp1,pa);while(qa!=NULL&qa-exp=qb-exp)temp2-next=new Polynomial;temp2-next-coe=(qa-coe)/(qb-coe);temp2-next-exp=(qa-exp)-(qb-exp);Insert(temp2-next,quotient);pa=SubtractPolyn(pa,MultiplyPolyn(pb,temp2);qa=pa-next;temp2-next=NULL;remainder=SubtractPolyn(temp1,MultiplyPoly。
11、n(quotient,pb);pb=temp1;coutnext; float result=0; while(p!=NULL) result+=(p-coe)*(float)pow(x,p-exp); p=p-next; return result; void desktop()system(cls);coutm;ma=CreatePolyn(ma,m);coutn;mb=CreatePolyn(mb,n);void main()/int m,n;float x,result;char key;/Polyn pa,pb;coutkey;switch (key)case1:input();co。
12、utx;result=ValuePolyn(ma,x);cout多项式a的值:resultendl;break;case7:DestroyPolyn(ma);DestroyPolyn(mb);exit(0);break;default:coutError!endl;coutendlendl;system(pause);六 、程序测试6.1测试软件:Microsoft Visual C+ 6.06.2测试的数据:(1) A+B A= 3x14-8x8+6x2+2 B=2x10+4x8+-6x2(2) A-B A=11x14+3x10+2x8+10x6+5 B=2x14+3x8+5x6+7(3) 。
13、A*B A= 5x6+4x5+3x4 B= 6x6+5x5 (4) A= 5x6+4x5+3x4 X=2(5) A/B A=2x2 B=x2+16.3测试过程与结果:(1) A= 3x14-8x8+6x2+2 B=2x10+4x8-6x2 A+B=3x14+2x10-4x8+2图6-1加法测试(2) A=11x14+3x10+2x8+10x6+5 B=2x14+3x8+5x6+7 A-B=9x14+3x10-x8+5x6-2 图6-2减法测试图(3)A= 5x6+4x5+3x4 B= 6x6+5x5 A*B =30x12+49x11+38x10+15x9 图6-3乘法测试(4) A= 5x6+。
14、4x5+3x4 X=2 A=496图6-4求值测试图(5)A=2x2 B=x2+1A/B=2余数是-2;图6-5除法测试图七、 使用说明程序开始运行后,出现如图界面:图7-1界面初始图1、如果要进行加法运算,请输入2,出现请输入a的项数:请输入第一项的系数:就是输入第一个多项式的每一项的系数和指数。注意:输入是随便输入的。如第一个多项式为5x5;过程如下:请输入a的项数:1请输入a的系数:5请输入a的指数:5接着输入第2个多项式的每一项的系数和指数。输入完以后就直接显示结果了:2、如果要进行减法运算,请输入3,过程和输入加法一样,输入个多项式即可。3、如果要退出的话,请输入7即可结束程序的运行。
15、。八、 课设总结学完数据结构线性表一章后做此题,自觉就想到用带头结点的单链表来存储多项式,只需用结点记录多项式的系数和指数,此数据结构即节省空间又好进行操作,且进行运算的主要设计思路也易想到,大体设计结构在较短时间内能够完成。但当设计到具体细节代码时遇到了不少困难,主要困难是进行结点操作时,对指针考虑得不够细致,调试时常出现指针指错的情况,没有认真理清条件层次。完成此程序后,受益匪浅,它巩固了线性表一章学到的知识,而且重温了函数传参等重点知识。尽管对程序进行大量的调试分析修改,可还有些代码写得十分啰嗦,程序也不够健壮,对多项式的操作只限于2个多项式,还有在界面设计上没花太大心思,界面不美观。这。
16、些问题在日后还需进行改善。本次课程设计采用C+语言实现.这次设计基本上能实现指导书上的要求。我们可以通过这个程序实现计算器的一些基本功能,实现相关操作。通过本次课程设计,让我进一步了解了c+的一些知识,C+的字符串处理功能完全依靠字符串数组来实现,很多在其他高级语言中实现的字符串比较等操作,在这里完全依靠函数来实现,因此调试中字符串处理函数的调试很多本次课程设计培养了我们对这些实际问题的分析能力以及解决一些实际问题的能力。通过编程,巩固了我们对编程思想和写程序的能力。课程设计是对我们的学习很有利的一个环节。在这个阶段,我们学会把理论与实际的结合、懂得人与人沟通的重要性,明白合作的可贵。当然,在。
17、编写的过程中也出现了很多问题,但通过调试和看书解决了,大大的提高了我自学的能力,学会了遇到问题,如何利用资源去解决问题也明白了要完成一项设计,首先要有扎实的基础知识,这就要求我们在平时的学习中要不断提高自己。其次,要充分利用身边的各种资源,图书馆有很多相关的书,网上也有不少的知识解答,要好好的利用。第三,要多向身边的同学多请教,在交流中提高自己的实力。理论联系实践,在实践中提高。通过这次课程设计中,我加深了对课本知识的理解。九、产考文献1 王挺,周会平,贾丽丽,许锡山. C+程序设计M. 北京:清华大学出版社,20052 严蔚敏,吴伟民. 数据结构(C语言版)M. 北京:清华大学出版社,20053 李根强. 数据结构(C+版)习题解答及实训指导M. 北京:中国水利水电出版社,2009。
已知稀疏多项式C语言版,一元稀疏多项式计算器C语言课程设计相关推荐
- 数据结构c语言版第16页,数据结构c语言版
数据结构c语言版[编辑] 概述 <数据结构C语言版>本书的前半部分从抽象数据类型的角度讨论各种基本类型的数据结构及其应用;后半部分主要讨论查找和排序的各种实现方法及综合分析比较 出版信息 ...
- 数据结构——已知数组A[1…n] 的元素类型为整型int,设计一个时间和空间上尽可能高效的算法,将其调整为左右两部分,左边所有元素为奇数,右边所有元素为偶数,不要求对这些元素排序。
题目:已知数组A[1-n] 的元素类型为整型int,设计一个时间和空间上尽可能高效的算法,将其调整为左右两部分,左边所有元素为奇数,右边所有元素为偶数,不要求对这些元素排序. 代码展示: #inclu ...
- C语言源码做的职工工资管理系统课程设计(源码+课程设计报告)
一.课程设计的目的: C语言课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C语言程序设计的知识点,又接近工程实际需要.本次设计的目的是通过课程设计 ...
- C语言源码做的班级档案管理系统课程设计(源码+课程设计报告)
一.课程设计的目的: C语言课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C语言程序设计的知识点,又接近工程实际需要.本次设计的目的是通过课程设计 ...
- 基于Java语言实现一元稀疏多项式计算器【100010608】
1.实验内容 一元稀疏多项式计算器 使用语言:Java 语言 编译环境:openJDk-1.8 2.问题描述 设计一个简易的一元稀疏多项式计算器. 3.需求分析 经过分析,本系统需完成的主要功能如下: ...
- 数据结构c语言版实验报告2,数据结构(C语言版) 实验报告 (2)
<数据结构(C语言版) 实验报告 (2)>由会员分享,可在线阅读,更多相关<数据结构(C语言版) 实验报告 (2)(15页珍藏版)>请在人人文库网上搜索. 1.数据结构(C语言 ...
- c语言c 一元二次方程,如何用C语言来计算一元二次方程
C语言实现一元二次方程的解 源程序 #include #include float x1,x2,p,q,d; float great_than_zero(float,float); float equ ...
- 上海应用技术学院c语言实验报告5,上海应用技术学院课程设计报告
<上海应用技术学院课程设计报告>由会员分享,可在线阅读,更多相关<上海应用技术学院课程设计报告(14页珍藏版)>请在人人文库网上搜索. 1.上海应用技术学院课程设计报告课程名称 ...
- c语言数据结构校园导游系统,校园导游系统课程设计报告
校园导游系统课程设计报告 目录 1.需求分析1 2.总体设计1 2.1 抽象数据类型图的定义1 2.2 程序中包含的模块1 2.3模块间的调用关系3 3.详细设计3 3.1 代码设计3 3.1.1 定 ...
最新文章
- php lang无效,详解 Go 中的不可变类型
- 【Android 应用开发】Paint 滤镜原理 之 图像结构 ( 图片文件二进制分析 | PNG文件结构 | 数据块结构 | IHDR 数据块详解 )
- android frida 检测_frida测试方法整理
- 编程之美-阶乘方法整理
- Python——蟒蛇绘制
- 打开Delphi 10.1 berlin提示脚本错误的解决方法
- 家居市场2015惨淡收官 智能家居迎风而起前景广阔
- 如何在php中写内容,请问如何在内容模板中写标题和内容呢
- BugkuCTF-Reverse题mobile2(gctf)
- 主链增幅最高飚至 152%,主流币却惊现回落;以太坊发币速度持续放缓
- 腾讯起诉西瓜视频直播《王者荣耀》;人人车否认破产;苹果人事大变动! | 极客头条...
- Eigen教程(5)之块操作
- 在Vue项目中使用Echarts的一种方式
- Windows进程间各种通信方式浅谈(转)
- EntityFramework 连接数据库出错
- 如何设置sap生产订单自动关闭
- 一个比较好看的彩带飘飞和点击效果 canvas实现
- BVH with SAH (Bounding Volume Hierarchy with Surface Area Heuristic)
- 鲲鹏devkit开发套件——编译调试工具介绍
- iApp(11)情侣视频播放器
热门文章
- Linux(GPU)显卡清理缓存
- Java常量池的一点理解
- 【目标追踪】三帧差法原理及实现
- 进销存软件|云ERP仓库管理系统软件源码开源可扫码
- 笔记:C++中求一个正整数n以内的所有质数以及所有质数的总和
- JCIM2021 | MolGPT : 基于Transformer-Decoder的分子生成
- matlab有限元三角,FEM-MATLAB(75) 有限元编程75个案例,梁、板等结构,三角形,四边形等单元 Algorithm 数学计算 272万源代码下载- www.pudn.com...
- Spark--什么是宽窄依赖,及特殊join算子,join时何时产生shuffle,何时不产生shuffle
- 不怕水的电子书阅读器想要吗?亚马逊Kindle再出新品
- Scratch软件编程等级考试四级——20200913