ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:278.86KB ,
资源ID:296991      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-296991.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(一元稀疏多项式简单计算器.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

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

1、一元稀疏多项式简单计算器 数据结构课程设计 系 别计算机与通信工程学院专 业计算机科学与技术班级学号姓 名 指导教师成 绩 2012年 7 月 12 日一、需求分析1、问题描述:(需求分析和背景意义)设计一个一元稀疏多项式简单计算器.2、基本要求:(设计阶段,概要设计和详细设计)一元稀疏多项式简单计算器的基本功能是:(1)输入并建立多项式;(2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列;(3)多项式a和b相加,建立多项式a+b;(4)多项式a和b相减,建立多项式a-b.3、测试数据:(2

2、x+5x8-3.1x11)+(7-5x8+11x9)=(-3.1x11+11x9+2x+7)(6x-3-x+4.4x-2-1.2x9)-(-6x-3+5.4x2-x2+7.8x15)(1+x+x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5)(x+x3)+(-x-x3)=0(x+x100)+(x100+x200)=(x+2x100+x200)(x+x2+x3)+0=x+x2+x3互换上述测试数据中的前后两个多项式4、实现提示: 用带表头结点的单链表存储多项式5、选做内容 :(1)计算多项式在x处的值.(2)求多项式a的导函数a.(3)多项式a和b相乘,建立乘积多项式ab.(4)

3、多项式的输出形式为类数学表达式.例如,多项式-3x8+6x3-18的输出形式为-3x8+6x3 -18,x15+(-8)x7-14的输出形式为x15-8x7-14.注意,系数值为1 的非零次项的输出形式中略去系数1,如项1x8的输出形式为x8,项-1x3的输出形式为-x3.(5) 计算器的仿真界面.二、详细设计本程序采用VS2010编写,开始创建了一个工程,本程序的文件有:头文件:define.h 用以定义全局变量 function.h 用以声明函数源文件:function.cpp 用以定义函数 main.cpp 主函数下面罗列每个文件主要代码define.h#ifndef DEFINE_H#

4、define DEFINE_H#includeusing namespace std;#includestruct linklistmultinomial float a; int e; struct linklistmultinomial *next;typedef struct linklistmultinomial *linklist,node; #endiffunction.h#ifndef FUNCTION_H#define FUNCTION_H#includedefine.hvoid welcome();void goodbye();linklist createlinklist(

5、linklist head,int n);void insert(linklist p,linklist head);void printlinklist(linklist head);void addlinklist(linklist pa,linklist pb);void sublinklist(linklist pa,linklist pb);void dlinklist(linklist pa);void calclinklista(linklist pd,int x);void menu();#endiffunction.cpp#includedefine.h/欢迎界面void w

6、elcome() coutnnnnn; cout *nnendl; cout 一元稀疏多项式计算器 nnendl; cout 制作者:王雨辰 学号:4100113 nnendl; cout *nnnnnnn; cout 请输入请求 nnendl; cout 1.进入计算器 0.退出 nnendl;/结束界面void goodbye() system(cls); coutnnnnnendl; cout *nnendl; cout 谢谢使用,再见 nnendl; couta=0) free(p); else linklist p1,p2; p1=head; p2=p1-next; while(p2

7、&p2-ep-e) p1=p2; p2=p2-next; if(p2&p2-e=p-e) p2-a=p2-a+p-a; free(p); if(p2-a=0)p1-next=p2-next;free(p2); else p-next=p2; p1-next=p; /创建链表linklist createlinklist(linklist head,int n) linklist p; int i; p=head=(linklist)malloc(sizeof(node); head-next=NULL; for(i=1;i=n;i+) p=(linklist)malloc(sizeof(nod

8、e); cout请输入第i项系数p-a; cout请输入第i项指数p-e; insert(p,head); return head;/输出函数void printlinklist(linklist head)s linklist p=head-next; if(!p) couta=1) if(p-e=0) cout1; else coutxe; else if(p-a=0); else if(p-ae=0) couta; else coutaxe; else if(p-e=0) couta; else coutaxe; p=p-next; while(p) if(p-a=1) if(p-e=0

9、) cout+1; else cout+xe; else if(p-a=-1) if(p-e=0) cout-1; else cout-xe; else if(p-a=0); else if(p-ae=0) couta; else coutaxe; else if(p-e=0) cout+a; else cout+axe; p=p-next; coutnext; p2=pb-next; if(!(p1|p2) p3-next=NULL; else while(p1|p2) p=p3-next=(linklist)malloc(sizeof(node); if(p1=NULL) p-a=p2-a

10、;p-e=p2-e;p2=p2-next; else if(p2=NULL) p-a=p1-a;p-e=p1-e;p1=p1-next; else if(p1-e=p2-e) p-a=p1-a+p2-a;p-e=p1-e;p1=p1-next;p2=p2-next; else if(p1-ep2-e) p-a=p1-a;p-e=p1-e;p1=p1-next; else if(p1-ee) p-a=p2-a;p-e=p2-e;p2=p2-next; if(p-a=0) free(p); else p3=p; p3-next=NULL; printlinklist(pc);/a-bvoid su

11、blinklist(linklist pa,linklist pb) linklist pc; linklist p1,p2,p3,p; p3=pc=(linklist)malloc(sizeof(node); p1=pa-next; p2=pb-next; if(!(p1|p2) p3-next=NULL; else while(p1|p2) p=p3-next=(linklist)malloc(sizeof(node); if(p1=NULL) p-a=p2-a;p-e=p2-e;p2=p2-next; else if(p2=NULL) p-a=p1-a;p-e=p1-e;p1=p1-ne

12、xt; else if(p1-e=p2-e) p-a=p1-a-p2-a;p-e=p1-e;p1=p1-next;p2=p2-next; else if(p1-ep2-e) p-a=p1-a;p-e=p1-e;p1=p1-next; else if(p1-ee) p-a=-p2-a;p-e=p2-e;p2=p2-next; if(p-a=0) free(p); else p3=p; p3-next=NULL; if(pc-next-next=NULL&pc-next-a=0) /若a-b=0,输出0 cout0next; p4=pd=(linklist)malloc(sizeof(node);

13、 while(p1!=NULL) p4-next=(linklist)malloc(sizeof(node); p4=p4-next; if(p1-e=0) p4-a=0;p4-e=0; else if(p1-e=1) p4-a=p1-a;p4-e=0; else p4-e=p1-e-1;p4-a=p1-a*p1-e; p1=p1-next; p4-next=NULL; printlinklist(pd);/计算多项式在x处的值void calclinklista(linklist pe,int x) int sum=0,t,i; linklist p5; for(p5=pe-next;p5;

14、p5=p5-next) t=1; for(i=p5-e;i!=0;) if(ia*t; coutsumendl;/菜单void menu() int m,n,q=1,x; linklist pa=0,pb=0; cout请输入多项式a的项数m; pa=createlinklist(pa,m); cout请输入多项式b的项数n; pb=createlinklist(pb,n); cout *nnendl; cout 功能表 nn endl; cout 1.输出多项式a 2.输出多项式b endl; cout 3.输出a+b 4.输出a-b endl; cout 5.输出a的导数 6.计算多项式a

15、在x处的值 endl; cout 7.计算多项式b在x处的值 0.返回主菜单 nnendl; cout *nnnnnnn; while(q!=0) cout请输入命令q; switch(q) case 1:printlinklist(pa);break; case 2:printlinklist(pb);break; case 3:addlinklist(pa,pb);break; case 4:sublinklist(pa,pb);break; case 5:dlinklist(pa);break; case 6:cout输入xx;calclinklista(pa,x);break; cas

16、e 7:cout输入xx;calclinklista(pb,x);break; case 0:q=0;break; default:cout输入错误,请重新输入endl; 三、调试分析在这个程序写完后的调试过程中,出现了以下问题:1、printlinklist函数刚开是测试会出现首项系数为正,带加号的情况,加了个选择后解决此问题。2、addlinklist,sublinklist函数当做完后结果为0的情况出现不显示的情况,原因是没有及时释放节点,于是加上了free(p)。3、calclinklista要分清指数是正是负。通过本次课程设计我更加了解了单链表是怎样应用的,并学会将数据插入链表,删除链表中的数据等等四、用户手册开始界面然后根据提示输入多项式然后根据功能表来选择五、测试结果(2x+5x8-3.1x11)+(7-5x8+11x9)=(-3.1x11+11x9+2x+7)(1+x+x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5)(x+x100)+(x100+x200)=(x+2x100+x200)(x+x2+x3)+0=x+x2+x3以上结果经过测试运行皆正确

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2