6一元稀疏多项式计算器副本Word格式.docx
《6一元稀疏多项式计算器副本Word格式.docx》由会员分享,可在线阅读,更多相关《6一元稀疏多项式计算器副本Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
3.代码的编写。
定义数据结构和各个功能子函数。
4.程序的功能调试。
5.完成系统总结报告以及使用说明书
五、进度安排
此次课程设计时间为一周,分以下几个阶段完成:
1.选题与搜集资料:
每人选择一题,进行课程设计课题的资料搜集。
2.分析与概要设计:
根据搜集的资料,进行程序功能与数据结构分析,并选择合适的数据结构、并在此基础上进行实现程序功能的算法设计。
3.程序设计:
运用掌握C/C++语言编写程序,实现各个模块功能。
4.调试与测试:
调试程序,并记录测试情况。
5.完成课程设计报告。
6.验收与评分:
指导教师对每个同学的开发的系统进行综合验收,并由学院考核小组进行随机抽查评分。
六、撰写课程设计报告或课程设计总结
课程设计报告要求:
课程设计报告要求规范书写,应当包括如下7个部分:
1.需求分析
2.系统设计
3.程序流程图
4.类关系图
5.实现代码
6.总结
7.参考书目
七、答辩与评分标准:
1、作业文档:
50分;
2、基本功能和要求:
20分;
2、设计报告及使用说明书:
10分;
3、设置错误或者按照要求改变结果:
4、回答问题:
10分。
八、参考资料
《数据结构(C语言版)》
网上相关资料(....略)一元多项式计算器要随着生活水平的提高,现代科技也日益发达。
日常生活中多位计算再所难免,因此设计一个简单计算器可解决许多不必要的麻烦。
开发这样一个程序主要运用了C的结点,链表等方面知识。
系统主要实现了多项式的建立,多项式的输入输出,以及多项式加减乘等运算。
报告主要从计算器的程序段,对输入输出数据的要求,计算器的性能以及总体的设计来介绍此计算器程序的实现过程。
关键词:
多项式;
链表;
结点
1
系统设计方案
采用菜单设计,选择你需要的功能,用单链表储存你输入的数据。
(1)
菜单
菜单包括计算器加减乘等功能的选择
(2)
文件保存方式
运用带头节点的单链表储存多项式
(3)
抽象数据类型定义
主要定义多项式的系数和指数。
系数项用浮点类型定义,指数项用整型定义
一元多项式计算器
2
总体设计
3.1系统设计方案
(4)
存储结构
采用链式结构,建立链表储存输入的多项式
(5)
算法设计
运用链表知识,建立链表,给链表分配一定量的存储空间,查找链表,插入链表和链表的连接
3
功能模块设计
一元多项式计算器
建立多项式
多项式相加
保存多项式
4
多项式的建立主要需要建立新链表,并分配给这个新链表一定量的存储空间,分配的存储空间内进行运算;
多项式加减乘等运算主要运用了链表的建立,链表存储空间分配,链表的查找,插入与连接进行计算
5
调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在
6
软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。
或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。
过度测试则会浪费许多宝贵的资源。
到测试后期,即使找到了错误,然而付出了过高的代价
7
经过一段时间的设计,我的程序大体完成,基本上能实现任务书中的要求,但程序还存在一些缺点。
附录
#include<
iostream>
usingnamespacestd;
typedefstructPNode//多项式链表结点表示
{
floatcoef;
//系数
intexpn;
//指数
structPNode*next;
}PNode,*Polynomial;
voidCreatPolyn(Polynomial&
P,intm)//建立表示一次多项式的有序链表
inti;
Polynomialp;
P=newPNode;
P->
next=NULL;
for(i=1;
i<
=m;
i++)
{
p=newPNode;
//申请一个新节点
cin>
>
p->
coef>
expn;
if(p->
coef==0)deletep;
//如果系数为0释放该结点
else
Polynomialr,s;
r=P;
s=P->
next;
while(s&
&
s->
expn<
expn)//查找插入位置
r=s;
s=s->
}
if(s&
expn==s->
expn)//插入的结点指数与原本存在的相同时
s->
coef+=p->
coef;
deletep;
if(!
coef)
r->
next=s->
deletes;
else{r->
next=p;
next=s;
}
voidDisplay(Polynomialp)//多项式输出
Polynomialq=p->
intflag=1;
//统计第几项
q)//
cout<
<
"
多项式为空"
endl;
while(q)
if(q->
0&
flag!
=1)cout<
+"
;
//系数大于0不为第一项
coef!
=1&
q->
=-1)//系数不为1和-1(即一般情况)
expn==1)//指数为1
X"
elseif(q->
expn)
X^"
else//系数为1和-1
coef==1)
expn)cout<
1"
expn==1)cout<
elsecout<
x^"
coef==-1)
-1"
-X"
-X^"
q=q->
flag++;
voidCopy(Polynomialpa,Polynomial&
pc)//复制链表(保存a,b)
Polynomialp,q,r;
pc=newPNode;
pc->
r=pc;
//保护头节点
p=pa;
while(p->
next!
=NULL)
q=newPNode;
q->
coef=p->
next->
expn=p->
r->
next=q;
r=q;
p=p->
intCompare(inta,intb)//比较函数
if(a==b)return0;
elseif(a<
b)return-1;
elsereturn1;
voidAddpolyn(Polynomial&
pa,Polynomial&
pb)//一次多项式的加法运算
Polynomialp1,p2,p3,r;
p1=pa->
p2=pb->
p3=pa;
floatsum;
while(p1&
p2)
switch(Compare(p1->
expn,p2->
expn))//比较多项式的指数
case0:
sum=p1->
coef+p2->
if(sum!
=0)
p1->
coef=sum;
p3->
next=p1;
p3=p1;
p1=p1->
r=p2;
p2=p2->
deleter;
r=p1;
p1=p1->
deleter;
p2=p2->
break;
case-1:
p3=p1;
case1:
next=p2;
p3=p2;
next=p1?
p1:
p2;
deletepb;
voidDestroyPolyn(Polynomialp){
//销毁多项式p
Polynomialq1,q2;
q1=p->
q2=q1->
while(q1->
next)
deleteq1;
q1=q2;
q2=q2->
intmain(void)
charf;
欢迎使用多项式加法计算器"
intm,n;
请输入m(多项式a的项数),n(多项式b"
的项数),建立两个有序多项式"
m"
cin>
m;
n"
n;
if(m<
=0&
n<
=0)cout<
输入有误"
Polynomiala,b,c,d;
请输入多项式a的系数和指数"
共"
m<
项"
CreatPolyn(a,m);
请输入多项式b的系数和指数"
CreatPolyn(b,n);
Copy(a,c);
Copy(b,d);
//菜单
*********************************"
******多项式的操作***************"
A显示多项式a"
B显示多项式b"
C显示多项式a,b的和"
Z结束本次操作"
while
(1)
请选择对多项式的操作"
f;
switch(f)
case'
A'
:
a'
多项式a="
Display(a);
B'
b'
多项式b="
Display(b);
C'
c'
Addpolyn(c,d);
a+b="
;
Display(c);
Z'
z'
谢谢使用"
DestroyPolyn(a);
DestroyPolyn(b);
DestroyPolyn(c);
DestroyPolyn(d);
return0;
default:
您的选择有误,请从新选择"