一元稀疏多项式计算器.docx

上传人:b****3 文档编号:929008 上传时间:2022-10-14 格式:DOCX 页数:23 大小:114.23KB
下载 相关 举报
一元稀疏多项式计算器.docx_第1页
第1页 / 共23页
一元稀疏多项式计算器.docx_第2页
第2页 / 共23页
一元稀疏多项式计算器.docx_第3页
第3页 / 共23页
一元稀疏多项式计算器.docx_第4页
第4页 / 共23页
一元稀疏多项式计算器.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

一元稀疏多项式计算器.docx

《一元稀疏多项式计算器.docx》由会员分享,可在线阅读,更多相关《一元稀疏多项式计算器.docx(23页珍藏版)》请在冰豆网上搜索。

一元稀疏多项式计算器.docx

一元稀疏多项式计算器

 

(本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)

实验难度:

A□B□C□

序号

学号

姓名

成绩

1

2

指导教师:

(签名)

学  期:

  任课教师:

  

实验题目:

一元稀疏多项式计算器

小组长:

   

联系电话:

 

电子邮件:

 

大学软件学院2012学年秋季学期

《数据结构实验》成绩考核表

学号:

姓名:

本人承担角色:

评分项目

评分指标

分值

得分

实验构思(10%)

1.实验目的明确

5

2.实验内容理解透彻、对实验所涉及到的知识点分析到位

5

实验设计(15%)

1.有对基本数据结构的抽象数据类型定义

5

2.实验方案设计完整,数据结构、算法选择合理

5

3.算法结构和程序功能模块之间逻辑清晰、有相应的流程图

5

实验实现(25%)

1.代码编写规范、风格统一、注释清楚易读

5

2.程序运行正常,测试结果正确

15

3.界面友好、易于操作、有较强的容错性

5

实验报告撰写(10%)

1.内容详实无缺漏,文字流畅、图表清楚

5

2.实验结果分析客观、详细,实验体会真实可信,对原实验方案的改进和对实验内容的发散性思考

5

个人工作量(30%)

1.个人完成工作量

15

2.个人技术水平

10

3.团队合作精神

5

实验运作(10%)

1.有一定用户群

5

2.应用前景分析

5

综合得分:

(满分100分)

指导教师:

年月日

云南大学软件学院2010学年秋季学期

《数据结构实验》成绩考核表

学号:

20111120姓名:

本人承担角色:

函数实现整体流程控制

评分项目

评分指标

分值

得分

实验构思(10%)

1.实验目的明确

5

2.实验内容理解透彻、对实验所涉及到的知识点分析到位

5

实验设计(15%)

1.有对基本数据结构的抽象数据类型定义

5

2.实验方案设计完整,数据结构、算法选择合理

5

3.算法结构和程序功能模块之间逻辑清晰、有相应的流程图

5

实验实现(25%)

1.代码编写规范、风格统一、注释清楚易读

5

2.程序运行正常,测试结果正确

15

3.界面友好、易于操作、有较强的容错性

5

实验报告撰写(10%)

1.内容详实无缺漏,文字流畅、图表清楚

5

2.实验结果分析客观、详细,实验体会真实可信,对原实验方案的改进和对实验内容的发散性思考

5

个人工作量(30%)

1.个人完成工作量

15

2.个人技术水平

10

3.团队合作精神

5

实验运作(10%)

1.有一定用户群

5

2.应用前景分析

5

综合得分:

(满分100分)

指导教师:

年月日

(下面的内容由学生填写,格式统一为,字体:

楷体,行距:

固定行距18,字号:

小四,个人报告按下面每一项的百分比打分。

难度A满分70分,难度B满分90分)

一、【实验构思(Conceive)】(10%)

多项式计算器的呈现方式是用控制台程序呈现,;多项式的加减乘以及求导的函数中利用链表保存头结点以及循环结构保存和输出数据;还有利用一个简单的降序排列的函数,在输出时更加明了。

二、【实验设计(Design)】(20%)

在头文件中申明变量,源文件中创建指数和系数的指针的头结点,并为此申请空间。

首先考虑指数为0,1和系数为0,1时的特殊情况的表示;然后利用SORT函数对输出时进行降序排列;其次就是加减乘以及求导函数的实现;最后是一个输出界面的设计。

三、【实现描述(Implement)】(30%)

//--------函数原型说明--------

typedefstructNode

{

doublexishu;

intzhishu;//数据域

//intdata;

structNode*pnext;//指针域

}Node,*pNode;

pNodephead=(pNode)malloc(sizeof(Node));//创建头节点

pNodecreat_list(void);创建链表

voidtraverse_list(pNodephead);//遍历链表

pNodesort(pNodephead);//对链表进行降序排列

pNodeadd(pNodephead1,pNodephead2);//两个多项式相加

pNodehebing(pNodephead)//合并同类项

pNodemulti(pNodephead1,pNodephead2);//多项式相乘

pNodesub(pNodephead1,pNodephead2);//多项式相减

//多项式求导没有声明和定义函数,而是直接卸载程序里了

//------关键操作的实现-------

1.对链表的声明和定义和对创建函数的定义。

#include"stdafx.h"

#include"cpxNum.h"

typedefstructNode

{

doublexishu;

intzhishu;//数据域

//intdata;

structNode*pnext;//指针域

}Node,*pNode;

pNodecreat_list(void)

{

intlen;

inti;

//intval;

intzhishu;

doublexishu;

pNodephead=(pNode)malloc(sizeof(Node));//分配了一个不存在有效数据的头结点

pNodeptail=phead;

ptail->pnext=NULL;

if(phead==NULL)

{

cout<<"分配失败<

exit(-1);

}

cout<<"请输入想输入多项式的项数"<

cin>>len;

for(i=0;i

{

cout<<"请?

输º?

入¨?

第̨²"<

项?

的Ì?

系¦Ì数ºy的Ì?

值¦Ì"<

cin>>xishu;

cout<<"请?

输º?

入¨?

第̨²"<

项?

的Ì?

指?

数ºy的Ì?

值¦Ì"<

cin>>zhishu;

pNodepnew=(pNode)malloc(sizeof(Node));

if(pnew==NULL)

{

cout<<"分¤?

配?

失º¡ì败㨹"<

exit(-1);

}

pnew->xishu=xishu;

pnew->zhishu=zhishu;

ptail->pnext=pnew;

pnew->pnext=NULL;

ptail=pnew;

}

phead->zhishu=len;

returnphead;

}

2.对多项式遍历,排序,同类项合并的定义

1.多项式的遍历

//将多项式分为第一项和其余项两部分考虑,另外考虑指数=0,指数=1,系数=1,系数=0等情况。

voidtraverse_list(pNodephead)

{

pNodep=phead->pnext;

if(p->zhishu==0)

cout<xishu;

else{

if(p->zhishu==1)

cout<<"("<xishu<<")"<<"x";

else{

if(p->xishu==1)

cout<<"x"<<"^"<zhishu;

else

{if(p->xishu==0)

cout<<"0";

else

cout<<"("<xishu<<")"<<"x"<<"^"<zhishu;

}

}

}

p=p->pnext;

while(p)

{if(p->zhishu==0)

cout<<"+"<xishu;

else{

if(p->zhishu==1)

cout<<"x+"<<"("<xishu<<")";

else{

if(p->xishu==1)

cout<<"+"<<"x"<<"^"<zhishu;

else

{if(p->xishu==0)

cout<<"+0";

else

cout<<"+"<<"("<xishu<<")"<<"x"<<"^"<zhishu;

}

}

}

p=p->pnext;

}

cout<

return;

}

2.排序操作。

//通过冒泡排序对多项式进行降序排列。

pNodesort(pNodephead)

{

inti,j;

floatxishu;

intzhishu;

pNodep,q,f;

f=phead;

intlen=phead->zhishu;

for(i=0,p=phead->pnext;ipnext)

{

for(j=i+1,q=p->pnext;jpnext)

{

if(p->zhishuzhishu)

{

xishu=p->xishu;

zhishu=p->zhishu;

p->xishu=q->xishu;

p->zhishu=q->zhishu;

q->xishu=xishu;

q->zhishu=zhishu;

}

}

}

returnf;

}

3.合并排序

//通过检查将同类型合并,在加法,减法和乘法函数中会用到

pNodehebing(pNodephead)

{

pNoder,q,p,Q;

for(q=phead->pnext;q!

=NULL;q=q->pnext)//合?

并¡é同ª?

类¤¨¤项?

for(p=q->pnext,r=q;p!

=NULL;)

if(q->zhishu==p->zhishu)//指?

数ºy相¨¤等̨¨系¦Ì数ºy相¨¤加¨®

{

q->xishu=q->xishu+p->xishu;

r->pnext=p->pnext;

Q=p;p=p->pnext;

deleteQ;//释º¨ª放¤?

p

}

else

{

r=r->pnext;

p=p->pnext;

}

returnphead;

}

3.多项式的加,减,乘,求导,x代入值的实现

1.多项式的加法

//创建一个新链表存储新的多项式,开始对phead1和phead2进行扫描,指数相同就相加。

pNodeadd(pNodephead1,pNod

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1