文档库 最新最全的文档下载
当前位置:文档库 › 设计一个一元稀疏多项式计算器论文(1)

设计一个一元稀疏多项式计算器论文(1)

设计一个一元稀疏多项式计算器论文(1)
设计一个一元稀疏多项式计算器论文(1)

课程设计(论文)

课程名称:数据结构课程设计

题目:一元稀疏多项式简单计算器

院(系):信息与控制工程学院

专业班级:计算机0901

姓名:张强

学号:090620119

指导教师:李智杰

2011年9 月9日

西安建筑科技大学课程设计(论文)任务书

专业班级:计算机0901 学生姓名:张强指导教师(签名):

一、课程设计(论文)题目

问题描述:设计一个一元稀疏多项式简单计算器。

二、本次课程设计(论文)应达到的目的

数据结构是实践性很强的课程。课程设计是加强学生实践能力的一个强有力手段。课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。

本题目要达到目的:熟练掌握数组、链表的各种应用。

三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术参数、设计要求等)

[基本要求]

(1)输入并建立多项式;

(2)输出多项式,输出形式为整数序列:n,c1,e1, c2,e2,,,,,,, c n,e n,其中n是多项式的项数,c i,e i,分别是第i项的系数和指数,序列按指数降序排序;

(3)多项式a和b相加,建立多项式a+b;

(4)多项式a和b相减,建立多项式a-b;

(5)计算多项式在x处的值。

(6)计算器的仿真界面。

四、应收集的资料及主要参考文献:

由于本课程没有安排“课内上机”学时,因此,在课程设计之前必须自己已经上机练习了“数组、线性表”及其有关的基本操作。

参考文献:

1.本年级用的教材:数据结构与算法分析(C++版)(第二版)影印版 2005,7;

2.C++程序设计技能百练,中国铁道出版社,2004,1 蒋立翔编著;

3. 数据结构与C++,西安交通大学出版社,1999,11 周叶著;

4.C/C++与数据结构,清华大学出版社,2002,3,1 王立柱;

5.数据结构使用C++语言描述,东南大学出版社,2001,1,1 陈慧南;

五、审核批准意见

教研室主任(签字)

设计总说明

本文介绍了用C++语言编写一个一元稀疏多项式计算器。其内容包括输入并建立多项式, 两个多项式相加以及输出多项式:n, c1, e1, c2, e2, …cn , en, 其中,n是多项式项数,ci和ei 分别是第 i 项的系数和指数,序列按指数降序排列。利用这个程序可以方便的计算简单的一元稀疏多项式的基本运算。本课程设计就是对这样一个简单的计算器进行设计,用以实现一元稀疏多项式基本的运算问题。设计从小处着手,以小见大。运用所学的一些c++知识,构成整个计算器的形成框架。并在程序中定义了各种类型的运算的模块,本程序要求能够实现从键盘键入两个多项式的系数、指数相关数据后,能够进行多项式输出、多项式相加、多项式相减、多项式求值、多项式求积,多项式求商的运算,通过主程序的调用来完成他们之间的配合。来实现输入并建立多项式,两多项式的相加以及多项式的输出。

目录

一.问题描述 (1)

二.需求分析 (1)

三.概要设计 (2)

四.详细设计 (3)

五.源代码 (4)

六.程序测试 (17)

七.使用说明 (21)

八.课设总结 (22)

九.参考文献 (23)

数据结构课程设计

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

一、问题描述

1、基本要求

(1)输入并建立多项式;

(2)输出多项式,输出形式为整数序列:n,c1,e1, c2,e2,,,,,,, cn,en,其中n是多项式的项数,ci,ei,分别是第i项的系数和指数,序列按指数降序排序;

(3)多项式a和b相加,建立多项式a+b;

(4)多项式a和b相减,建立多项式a-b;

(5)计算多项式在x处的值。

(6)计算器的仿真界面。

2、设计目的

数据结构是实践性很强的课程。课程设计是加强学生实践能力的一个强有力手段。课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用

二、需求分析

1、设计开发环境:

软件方面:系统windows xp 编程软件:VC++ 6.0

2、思路分析:

①一般情况下的一元n次多项式可写成

pn(x)=p1xe1+p2xe2+……+pmxem

其中,p1是指数为ei的项的非零系数,且满足0≦e1

②用两个带表头结点的单链表分别存储两个多项式

③根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式”中的一项; ④只需要将第二个多项式的系数改为其相反数,然后根据一元多项式相加的运算规则便可以得到其相应的“差多项式”

三、概要设计

图3-1功能模块图

菜单

加法 AddPo lyn(ma ,mb)

减法Subtrac tPolyn(ma,mb ) 乘法 Multipl yPolyn (ma,m b) 求值ValueP olyn(m a,x)

输入Insert(Polyn p,Poly n h)

除法Device Polyn(ma,mb )

输出deskto p()

为实现上述程序功能,用带表头结点的单链表存储多项式。元素类型,节点类型,和指针类型:typedef struct Polynomial{

int coe; //系数 int exp;//指数 struct Polynomial *next; }*Polyn,Polynomial;

各个模块之间的调用如图3-1所示,调用insert ()函数将输入的多项式按降幂排列,通过主函数main ()中swith 语句,选择用户所选择的对应的模块,然后又模块对应的功能函数对用户输入的数据进行相应的操作,最后通过desktop ()模块将最后结果输出。

四、详细设计

图4-1 功能实现流程图

开始运行

多项式加法计算器

求和(差) 求积、商 退出

关闭运行

按任意键退出

输出结果 多项式求积、商 多项式相加求和

(差)

输出求和(差)

结果

建立2个多项式 输入多项式

4.1 输入模块

用户可通过本模块来输入一个多项式,在每次输入一个多项式时,本模块会先判断谁否是第一次输入,如果是,创建节点,如果不是则模块会通过判断本次输入的数的指数与第一项输入的指数的大小,如果第一项的指数较大,则刚输入的这一项继续与第二项比较指数,以此类推,如果发现刚输入的这一项的指数比比较的这一项的指数要大,则插入比较项的前面。

4.2 求和、差模块

用户通过本模块可以实现两个多项式的求和或差值,此模块先调用输入模块,进行对两个要运算的多项式进行初始化,并按降幂排列。然后将两个多项式的幂进行一个对比,如果第一个数的第一项的系数大于第二个多项式的第一个项的系数,那么直接将第一项赋值于刚开始创建的链表的第一项,作为答案的最后一项,反之亦然,如果第一个数的第一项,与第二个数的第一项的系数相同,那么将两个数的系数与指数分别相加或者相减并将对应值赋值给答案相对应的项。以此类推。最后有输出模块输出最后答案。

4.3求积、商模块

用户可通过该模块实现两个多项式的相乘(相除),此模块先调用输入模块,进行对两个要运算的多项式的初始化,并按降幂排列。然后将第一个数的系数、指数与第二个数的系数、指数分别相乘(相除),相加(相减),并且赋值给答案相应的系数、指数。完成后执行第一个数的第一项与第二个数的第二项进行相应的操作…….执行完之后最后调用输出模块将结果输出到屏幕上。

4.4求值模块

用户可通过此模块实现多项式的求值,此模块调用输入模块,完成相对应的操作,然后需要用户输入此时变量的值,并且将变量的值赋值给变量,最后将答案通过输出模块输出到屏幕上。

五、源代码

我真诚地保证:

我自己独立地完成了整个程序从分析、设计到编码的全过程。

如果在上述过程中,我遇到了困难而求教于人,那么,我将在程序报告中详细地列举我所遇到的问题,以及别人给我的提示。

在此,我感谢同学老师对我的启发和帮助。下面的报告中,我还会具体地提到他们在各个方法对我的帮助。

我的程序里中凡是引用到其他程序或文档之处,例如教材、课堂笔记、网上的源代码以及其他参考书上的代码段,我都已经在程序的注释里很清楚地注明了引用的出处。

我从未抄袭过别人的程序,也没有盗用别人的程序,无论是修改式地抄袭还是原封不动地抄袭。

我编写这个程序,从来没有想过要去破坏或妨碍其他计算机系统的正常运转。

<张强>

#include

#include

#include

typedef struct Polynomial{

int coe; //系数

int exp;//指数

struct Polynomial *next;

}*Polyn,Polynomial;

Polyn ma,mb;

void Insert(Polyn p,Polyn h)

{

if(p->coe==0) delete p;

else{

Polyn 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->next=q2;

q1->next=p;

}

}

}

Polyn CreatePolyn(Polyn head,int m)

{

int i;

Polyn p;

p=head=new Polynomial;

head->next=NULL;

for(i=0;i

p=new Polynomial;;

cout<<"请输入第"<

cin>>p->coe;

cout<<" 指数:";

cin>>p->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)

{

cout<<"0";

cout<

return;

}

while (qa)

{

if(qa->coe>0&&flag!=1) cout<<"+";

if(qa->coe!=1&&qa->coe!=-1)

{

cout<coe;

if(qa->exp==1) cout<<"X";

else if(qa->exp) cout<<"X^"<exp;

}

else

{

if(qa->coe==1)

{

if(!qa->exp) cout<<"1";

else if(qa->exp==1) cout<<"X";

else cout<<"X^"<exp;

}

if(qa->coe==-1)

{

if(!qa->exp) cout<<"-1";

else if(qa->exp==1) cout<<"-X";

else cout<<"-X^"<exp;

}

}

qa=qa->next;

flag++;

}

cout<

}

int compare(Polyn a,Polyn b)

{

if(a&&b)

{

if(!b||a->exp>b->exp) return 1;

else if(!a||a->expexp) return -1;

else return 0;

}

else if(!a&&b) return -1;

else return 1;

}

Polyn AddPolyn(Polyn 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->coe;

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 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;

}

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;

temp2->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,MultiplyPolyn(quotient,pb));

pb=temp1;

cout<

PrintPolyn(quotient);

cout<<"yushu"<

PrintPolyn(remainder);

}

float ValuePolyn(Polyn head,float x)

{

Polyn p;

p=head->next;

float result=0;

while(p!=NULL)

{

result+=(p->coe)*(float)pow(x,p->exp);

p=p->next;

}

return result;

}

void desktop()

{

system("cls");

cout<

cout<<"

**********************************************"<

cout<<" ** 1.输出多项式a和b **"<

cout<<" ** 2.建立多项式a+b **"<

cout<<" ** 3.建立多项式a-b **"<

cout<<" ** 4.建立多项式a*b

**"<

cout<<" ** 5.建立多项式a/b

**"<

cout<<" ** 6.计算多项式a的值

**"<

cout<<" ** 7.退出

**"<

cout<<"

**********************************************"<

cout<<" 执行操作:";

}

void input(){

int m,n;

//Polyn pa,pb;

cout<<"请输入多项式a的项数:";

cin>>m;

ma=CreatePolyn(ma,m);

cout<

cout<<"请输入多项式b的项数:";

cin>>n;

mb=CreatePolyn(mb,n);}

void main()

{

//int m,n;

float x,result;

char key;

//Polyn pa,pb;

cout<

欢迎您的使用!"<

cout<<" 系统正在初始化数据,请稍后..."<

_sleep(3*1000);

system("cls");

while(key)

{

desktop();

cin>>key;

switch (key)

{

case'1':input();

cout<<"多项式a:";

PrintPolyn(ma);

cout<<"多项式b:";

PrintPolyn(mb);

break;

case'2':input();

//pc=AddPolyn(pa,pb);

cout<<"多项式a:";

PrintPolyn(ma);

cout<<"多项式b:";

PrintPolyn(mb);

cout<<"多项式a+b:";

PrintPolyn(AddPolyn(ma,mb));

//DestroyPolyn(pc);

break;

case'3':input();

//pd=SubtractPolyn(pa,pb);

cout<<"多项式a:";

PrintPolyn(ma);

cout<<"多项式b:";

PrintPolyn(mb);

cout<<"多项式a-b:";

PrintPolyn(SubtractPolyn(ma,mb));

//DestroyPolyn(pd);

break;

case'4':input();

//pd=SubtractPolyn(pa,pb);

cout<<"多项式a:";

PrintPolyn(ma);

cout<<"多项式b:";

PrintPolyn(mb);

cout<<"多项式a*b:";

PrintPolyn(MultiplyPolyn(ma,mb));

//DestroyPolyn(pd);

break;

case'5':input();

//pd=SubtractPolyn(pa,pb);

cout<<"多项式a:";

PrintPolyn(ma);

cout<<"多项式b:";

PrintPolyn(mb);

cout<<"多项式a/b:";

DevicePolyn(ma,mb);

//DestroyPolyn(pd);

break;

case'6':input();

cout<<"多项式a:";

PrintPolyn(ma);

cout<<"输入x的值:x=";

cin>>x;

result=ValuePolyn(ma,x);

cout<<"多项式a的值:"<

break;

case'7':

DestroyPolyn(ma);

DestroyPolyn(mb);

exit(0);

break;

一元稀疏多项式计算器实验(报告+程序)

一元稀疏多项式计数器预习报告 :刘茂学号0062 一、实验要求 (1)输入并建立多项式; (2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……cn,en,其中n是多项式的项数,ci,ei分别为第i项的系数和指数。序列按指数降序排列; (3)多项式a和b相加,建立多项式a+b; (4)多项式a和b相减,建立多项式a-b。 (5)多项式求值; (6)多项式求导; (7)求多项式的乘积。 二、测试数据: 1、(2x+5x^8-3.1x^11)+(7-5x^8+11x^9)=(-3.1x^11+11x^9+2x+7); 2、(6x^-3-x+4.4x^2-1.2x^9+1.2x^9)-(-6x^-3+5.4x^2-x^2+7.8x^15 )=(-7.8x^15-1.2x^9+12x^-3-x); 3、(1+x+x^2+x^3+x^4+x^5)+(-x^3-x^4)=(1+x+x^2+x^5); 4、(x+x^3)+(-x-x^3)=0; 5、(x+x^100)+(x^100+x^200)=(x+2x^100+x^200); 6、(x+x^2+x^3)+0=x+x^2+x^3. 7、互换上述测试数据中的前后两个多项式。

三、思路分析 用带表头结点的单链表存储多项式。 本程序要求输入并建立多项式,能够降幂显示出多项式,实现多项式相加相减的计算问题,输出结果。 采用链表的方式存储链表,定义结点结构体。运用尾差法建立两条单链表,以单链表polyn p和polyn h分别表示两个一元多项式a和b。 为实现处理,设p、q分别指向单链表polya和polyb的当前项,比较p、q 结点的指数项。 ①若p->expnexpn,则结点p所指的结点应是“和多项式”中的一项,令指针p后移。 ②若p->expn=q->expn,则将两个结点中的系数相加,当和不为0时修改结点p的系数。 ③若p->expn>q->expn,则结点q所指的结点应是“和多项式”中的一项,将结点q插入在结点p之前,且令指针q在原来的链表上后移。 四、实验程序 //头文件 #include #include #include //定义多项式的项 typedef struct Polynomial{ float coef; int expn; struct Polynomial *next; }*Polyn,Polynomial;

计算机辅助设计---小论文

机械工程学院 《计算机辅助设计》论文 题 目: 专 业: 机械设计制造及其自动化 班 级: 机制1204班 姓 名: 学 号: 得分

快速成型技术应用现状及发展趋势 摘要: 快速成型技术以其独特的特点和长处,成为加速新产品开发及实现并行工程的有效技术,具有广泛的应用领域和应用价值,发展十分迅猛,该技术的重要性已不容忽视。快速成型技术问世以来,已实现了相当大的市场,发展非常迅速。人们对材料逐层添加法这种新的制造方法已逐步适应。该技术通过与数控加工、铸造、金属冷喷涂、硅胶模等制造手段结合,已成为现代模型、模具和零件制造的强有力手段,在航空航天、汽车摩托车、家电等领域得到了广泛应用。快速成型技术是基于离散/ 堆积的原理。在计算机的控制下快速成型机的成型头选择性地固化一层层的液体材料(或选择性的切割一层层的纸、烧结一层层的粉末材料、喷涂一层层的热熔性材料等) ,形成各个截面轮廓并逐步顺序叠加成三维工件实体。RP 技术的主要方法有:光固化立体造型SLA、分层物件制造、选择性激光烧结法、熔融沉积造型。 关键词: 快速成型技术; 应用现状; 发展趋势

一、快速成型技术的原理与发展 快速成形技术(Rapid Prototyping;RPM)又称快速原型制造(Rapid Prototyping Manufacturing,简称RPM)技术,是基于材料堆积法的一种高新制造技术,被认为是近20年来制造领域的一个重大成果。它集机械工程、CAD、逆向工程技术、分层制造技术、数控技术、材料科学、激光技术于一身,可以自动、直接、快速、精确地将设计思想转变为具有一定功能的原型或直接制造零件,从而为零件原型制作、新设计思想的校验等方面提供了一种高效低成本的实现手段。即,快速成形技术就是利用三维CAD的数据,通过快速成型机,将一层层的材料堆积成实体原型。 20 世纪80 年代初在美国出现, 90 年代在全球得到迅速发展的一门综合性、交叉性前沿技术, 是先进制造技术的重要组成部分, 也是制造技术的一次飞跃, 具有很高的加工柔性和很快的市场响应速度, 为制造技术的发展创造了一个新的机遇。快速成型技术的发展历史快速成型技术首先在美国得到使用, 1987 年3D System 公司首次推出商业化的快速成型设备。当1988 年将第1 台设备SLA 21 卖给Bater Healthare、Pratt and Whitney 和Eastman Kodak时, 就标志着快速成型技术工业化应用的开始。20世纪90 年代, 快速成型技术的应用范围迅速扩大,使用单位包括美国的波音和通用、德国的奥迪和宝马等许多国际知名大公司。1992 年, 快速成型设备已经在17个国家的500 个项目中得到工业应 用;1994 年9 月, 世界上投入使用的快速成型设备增加到800 多台, 其中美国占绝大多数, 日本有100 多台; 1996 年底, 全世界已安装了1 400 多台快速成型设备。至2000 年6 月, 已有40 多家公司设计、制造快速成型设备, 其在全球的使用数量已达2 000多台。我国于90 年代初才开始快速成型技术研究, 主要有西安交通大学、清华大学、华中科技大学及北京隆源自动成型系统有限公司, 进行了光固化成型、熔融沉积造型、分层实体制造和选区激光烧结成型技术与设备研究, 目前其相应的快速成型设备均已实现商品化。 近十几年来,随着全球市场一体化的形成,制造业的竞争十分激烈。尤其是计算机技术的迅速普遍和CAD/CAM技术的广泛应用,使得RPM技术得到了异乎寻常的高速发展,表现出很强的生命力和广阔的应用前景。快速成形技术发展至今,以其技术的高速性、高集成性、高柔性、自动化程度高而得到了迅速发展。目前,快

一元稀疏多项式的加法运算(数据结构实习)

实习一线性表、栈和队列及其应用 ——一元稀疏多项式的加法运算 【问题描述】 设计一个实现一元稀疏多项式相加运算的演示程序。 【基本要求】 (1)输入并建立两个多项式; (2)多项式a与b相加,建立和多项式c; (3)输出多项式a,b,c。输出格式:比如多项式a为:A(x)=c1xe1+ c2xe2+…+ cmxem,其中,ci和ei分别为第i项的系数和指数,且各项按 指数的升幂排列,即0≤e1<e2<…<em。多项式b,c类似输出。 【测试数据】 (1)(1+x+x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5) (2)(x+x100)+(x100+x200)=(x+2x100+x200) (3)(2x+5x8-3x11)+(7-5x8+11x9)=(7+2x+11x9-3x11) 一.需求分析 1.输入的形式和输入值的范围: 输入是从键盘输入的,输入的内容为多项式的系数和指数,其中多项式的每一项分别以一个系数和指数的形式输入,不带未知数X,系数为任意的实数,指数为任意的整数。 要结束该多项式的输入时,输入的指数和系数都为0. 2. 输出的形式 从屏幕输出,显示用户输入的多项式,并显示多项式加减以后的多项式的值,并且多项式中将未知数X表示了出来. 形式为:+c1X^e1+c2X^e2+…+ciX^ei+…(ci和ei分别是第i项的系数和指数,序列按指数升序排列。) 当多项式的某一项的系数为+1或者-1时侧该项多项式的输出形式为X^ei或-X^ei; 当该项的系数为正时输出+ciX^ei,当为负数时则输出ciX^ei 3. 程序所能达到的功能 输入并建立多项式,实现一元稀疏多项式的相加并输出。 4. 注意:所有多项式都必须以指数升密形式输入。 5. 测试数据为(1)(1+x+x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5) (2)(x+x100)+(x100+x200)=(x+2x100+x200) (3)(2x+5x8-3x11)+(7-5x8+11x9)=(7+2x+11x9-3x11) 二.设计 1.设计思路

实验报告——2 一元稀疏多项式计算器

华北水利水电学院一元稀疏多项式计算器实验报告 2010~2011学年第一学期 09 级计算机科学与技术专业班级: 2009119 学号: 200911902 姓名:万婷婷 一、实验目的 设计一个医院稀疏多项式简单计算器 熟练掌握线性表的基本操作在两种存储结构上的实现,其中以各种链表的操作和应用 二、实验要求 a)输入并建立多项式 b)输出多项式,输出形式为整数序列:n,c 1,e 1 ,c 2 ,e 2 ……c n ,e n ,其中n是多 项式的项数,c i ,e i 分别为第i项的系数和指数。序列按指数降序排列。 c)多项式a和b相加,建立多项式a+b,输出相加的多项式。 d)多项式a和b相减,建立多项式a-b,输出相减的多项式。 用带表头结点的单链表存储多项式。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(1+x+x2 +x3 +x4 +x5)+( -x3- x4) (4)(x+x2+x3)+0 (5)(x+x3)-(-x-x-3) (6) (x+x2 +x3 )+0 三、实验内容 主要算法设计 typedef struct Node { float coef; int index; struct Node *next; }LinkList; 本程序涉及到多项式的建立、多项式的输出、两个多项式的相加减。用带头结点的单链表存储多项式; 程序中共定义了5个函数:

void Insert(LinkList *p,LinkList *h)//把节点p插入到链表h中LinkList *Creat_L(LinkList *head,int m)//创建一个链表,项数为m void Printf(LinkList *L) LinkList *ADDlist(LinkList *head,LinkList *pb) LinkList *MinusList(LinkList *head,LinkList *pb) 四、程序源代码 #include #include #include #include typedef struct Node { float coef; int index; struct Node *next; }LinkList; void Insert(LinkList *p,LinkList *h)//把节点p插入到链表h中 { LinkList *q1,*q2; int flag=0; q1=h; if(p->coef==0) free(p); else { if(q1->next==NULL) { q1->next=p; }

计算机辅助设计论文

计算机辅助设计论文:计算机三维辅助软件在机械设计中的应用 摘要:介绍了三维CAD在机械设计中的显著优势,并对目前国内企业机械产品开发过程三维CAD系统应用现状和存在问题进行了分析。从产品开发的实际需求和产品特点与软件功能出发,对企业应用三维CAD过程提出了改进方案,最后介绍了三维CAD技术发展的趋势。 关键词:三维CAD;机械设计;应用 1三维设计软件现状及其应用 产品设计是决定产品外形和产品功能,同时也是决定产品质量最重要的环节,产品的设计工作对产品的成本也起到至关重要的作用。随着计算机的不断发展,CAD技术即计算机辅助设计已成为设计人员不可缺少的工具。CAD技术正从二维CAD向三维CAD过渡。三维设计软件具有工程及产品的分析计算、几何建模、仿真与试验、绘制图形,工程数据库的管理,生成设计文件等功能。三维CAD技术诞生以来,已广泛地应用于机械、电子、建筑、化工、航空航天以及能源交通等领域,产品的设计效率得以迅速提高。我国CAD技术的研究、开发和推广已取得较大进展,产品设计已全面完成二维CAD技术的普及,结束了手工绘图的历史,对减轻人工劳动强度、提高经济效益起到了明显的作用。有相当一部分CAD 应用较早的企业已完成了从二维CAD向三维CAD转换,并取得了巨大的经济效益和社会效益。随着市场经济的逐步深入,市场竞争日趋激烈,加强自身的设计能力是提高企业对市场变化和小批量、多品种要求的迅速响应能力的关键。 2三维设计软件的优势 2.1 CAD技术应用在机械设计的多个方面 2.1.1零件的实体建模 设计软件为三维建模提供了多种工具,包括最基本的几何造型如球体、圆柱等,对简单的零件,可通过对其结构进行分析,将其分解成若干基本体,对基本体进行三维实体造型,之后再对其进行交、并、差等布尔运算,便可得出零件的三维实体模型。对于较复杂的图形,软件提供了草图工具,设计人员可以通过它先勾勒出截面,再拉伸出较复杂的几何形体。为了满足人们不断提高的审美要求,目前主要流行的几款三维设计软件基本上都提供面片模块,该模块为设计人员提供了非常方便的曲面设计工具。对于具有大块曲面的零件,设计师可以方便地对单个面或片体进行变形处理,以达到需要的曲面。 2.1.2产品造型修改简便 企业生产的产品往往是按系列区分,各系列中每一代产品与上一代产品之间的区别较小,也许只是增加了一个功能部件或是产品造型尺寸上有所改动。三维CAD可以方便地修改一些参数就能达到设计师更改造型的目的。三维CAD在建模中一般使用参数化建模,整个建模的步骤和产品的外型尺寸被参数化,这些参数是与产品的造型直接关联的。若要对尺寸或造型进行局部的更改,只需要更改相关参数,整个造型将被自动更新。这样不仅大大减少了设计人员的工作量,还保证了产品外造型的延续性。 2.1.3生成实体装配图 实体装配不仅能让设计人员直观地看到各零件装配后的状态,还可以测量各零件之间的空间大小,方便零件的布置。在装配完成后,零件可以被隐藏或设置成半透明的状态,方便设计人员观察内部结构。此外,在装配状态下,软件提供的标准件库,也方便了设计人员对标准件型号的选择。装配状态下的干涉分析也是常用的功能,计算机通过计算各装配零件的体积的大小和位置来确定是否有相交的部分,并确定各零件是否干涉,自动生成分析报告,明确指出互相干涉零件的名称和干涉的尺寸。方便设计师修改产品设计尺寸。 2.2模具CAD/CAM的集成制造 随着科学技术的不断发展,为了减轻人工劳动强度,提高产品的精度,制造行业装备从

数据结构中实现一元多项式简单计算

数据结构中实现一元多项式简单计算: 设计一个一元多项式简单的计算器。 基本要求: 一元多项式简单计算器的基本功能为: (1)输入并建立多项式; (2)输出多项式; (3)两个多项式相加,建立并输出和多项式; (4)两个多项式相减,建立并输出差多项式; #include #include #define MAX 20 //多项式最多项数 typedef struct//定义存放多项式的数组类型 { float coef; //系数 int exp; //指数 } PolyArray[MAX]; typedef struct pnode//定义单链表结点类型 { float coef; //系数 int exp; //指数 struct pnode *next; } PolyNode; void DispPoly(PolyNode *L) //输出多项式 { PolyNode *p=L->next; while (p!=NULL) { printf("%gX^%d ",p->coef,p->exp); p=p->next; } printf("\n"); } void CreateListR(PolyNode *&L,PolyArray a,int n) //尾插法建表 { PolyNode *s,*r;int i; L=(PolyNode *)malloc(sizeof(PolyNode)); //创建头结点 L->next=NULL; r=L; //r始终指向终端结点,开始时指向头结点for (i=0;i

多项式的运算(c语言实现)

#include"stdio.h" #include"stdlib.h" #include"conio.h" typedef struct Item{ double coef;//系数 int expn;//指数 struct Item *next; }Item,*Polyn; #define CreateItem(p) p=(Item *)malloc(sizeof(Item)); #define DeleteItem(p) free((void *)p); /************************************************************/ /* 判断选择函数 */ /************************************************************/ int Select(char *str) { char ch; printf("%s\n",str); printf("Input Y or N:"); do{ ch=getch(); }while(ch!='Y'&&ch!='y'&&ch!='N'&&ch!='n'); printf("\n"); if(ch=='Y'||ch=='y') return(1); else return(0); } /************************************************************/ /* 插入位置定位函数 */ /**************************************************************/ int InsertLocate(Polyn h,int expn,Item **p) { Item *pre,*q; pre=h; q=h->next; while(q&&q->expnnext; } if(!q) { *p=pre; return(1); } else if(q->expn==expn) { *p=q; return(0); } else { *p=pre; return(-1); } } /************************************************************/ /* 插入结点函数 */ /************************************************************/ void insert(Item *pre,Item *p) {

(整理)一元稀疏多项式计算器

云南大学软件学院数据结构实验报告 (本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)实验难度: A □ B □ C □ 学期:2012秋季学期 任课教师: 实验题目: 一元稀疏多项式计算器 小组长: 联系电话: 电子邮件: 完成提交时间:2012 年 11 月 10 日 云南大学软件学院2012学年秋季学期

《数据结构实验》成绩考核表 学号: 20111120 姓名:本人承担角色:算法设计整体流程控制 综合得分:(满分100分) 指导教师: 年月日

云南大学软件学院2010学年秋季学期 《数据结构实验》成绩考核表 学号: 20111120 姓名:本人承担角色:函数实现整体流程控制 综合得分:(满分100分) 指导教师: 年月日

(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四,个人报告按下面每一项的百分比打分。难度A满分70分,难度B满分90分)一、【实验构思(Conceive)】(10%) 多项式计算器的呈现方式是用控制台程序呈现,;多项式的加减乘以及求导的函数中利用链表保存头结点以及循环结构保存和输出数据;还有利用一个简单的降序排列的函数,在输出时更加明了。 二、【实验设计(Design)】(20%) 在头文件中申明变量,源文件中创建指数和系数的指针的头结点,并为此申请空间。首先考虑指数为0,1和系数为0,1时的特殊情况的表示;然后利用SORT函数对输出时进行降序排列;其次就是加减乘以及求导函数的实现;最后是一个输出界面的设计。 三、【实现描述(Implement)】(30%) //--------函数原型说明-------- typedef struct Node { double xishu; int zhishu;//数据域 //int data; struct Node* pnext;//指针域 }Node,*pNode; pNode phead=(pNode)malloc(sizeof(Node));//创建头节点 pNode creat_list(void);创建链表 void traverse_list(pNode phead);//遍历链表 pNode sort(pNode phead);//对链表进行降序排列 pNode add(pNode phead1,pNode phead2);//两个多项式相加 pNode hebing(pNode phead)//合并同类项 pNode multi(pNode phead1,pNode phead2);//多项式相乘 pNode sub(pNode phead1,pNode phead2);//多项式相减 //多项式求导没有声明和定义函数,而是直接卸载程序里了

CAD毕业论文

毕业设计(论文) 计算机辅助设计在生产中的应用 院(系)名称: 专业名称: 班级名称: 学生学号: 学生姓名: 指导教师:

计算机辅助设计在生产中的应用 摘要 计算机辅助设计是利用计算机及其图形设备帮助设计人员进行设计工作,简称CAD。在工程和产品设计中,计算机可以帮助设计人员担负计算、信息存储和制图等项工作。在设计中通常要用计算机对不同方案进行大量的计算、分析和比较,以决定最优方案;各种设计信息,不论是数字的、文字的或图形的,都能存放在计算机的内存或外存里,并能快速地检索;设计人员通常用草图开始设计,将草图变为工作图的繁重工作可以交给计算机完成;利用计算机可以进行与图形的编辑、放大、缩小、平移和旋转等有关的图形数据加工工作。 随着现代计算机技术的飞速发展,计算机辅助设计CAD(Computer Aided Design)在生产中的应用日益广泛,本文主要从计算机辅助设计在机械生产中的应用等方面阐述了其在机械设计中的显著优势,并对目前国内企业机械产品开发过程三维CAD系统应用现状和存在问题进行了分析。从产品开发的实际需求和产品特点与软件功能出发,对企业应用三维CAD过程提出了改进方案,最后介绍了三维CAD技术发展的趋势。

1 绪论 1.1课题背景及目的 计算机的发展及应用,使人们的生活日新月异。计算机辅助设计源于计算机图形技术的产生,计算机辅助设计的研究构想发端于1950年,但最早记录是在1963年,美国麻省理工学院的研究人员 伊凡?苏泽 兰在美国计算机联合会会议上发表了名为《画板》的论文,从而开始了计算机辅助设计的发展历程。他从1950年开始着手开发通过图形技术来处理人与电脑交互对话的操作系统。1963年这套以电脑主机、显示屏、光电笔和键盘为工具的图形画线系统得到实现。这套图形画线系统开发和引进了许多计算机绘图的基本思想和技术,使用户可以运用电脑画出直线、复杂曲线以及简单的标准部件。 最初CAD被解释为“计算机辅助绘图”,由于当时计算机在设计上的作用是替代传统手工绘图的一种新工具,但随着后来信息技术的飞速发展,计算机技术在各领域的广泛应用,CAD的含义也在不断变化扩展,随着20世纪70年代像素的产生、80年代三维曲面造型系统的开发等,使电脑绘图从只能用“线”这一基本绘制元素发展到可以用点、面、体进行绘制计算机图形,从而使CAD的含义也发展成现在人们比较熟知的计算机辅助设计

一元稀疏多项式计算器C语言课程设计

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; (5)计算多项式在x处的值。 (6)计算器的仿真界面。 1.2设计目的 数据结构是实践性很强的课程。课程设计是加强学生实践能力的一个强有力手段。课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用 二、需求分析 2.1 设计开发环境: 软件方面:系统windows 7 编程软件:VC++ 6.0 2.2思路分析: ①一般情况下的一元n次多项式可写成 pn(x)=p1xe1+p2xe2+……+pmxem 其中,p1是指数为ei的项的非零系数,且满足0≦e1

《计算机辅助设计与制造》论文

浅析CAPP系统的发展及其在制造业 中的应用 姓名: 学号: 指导教师:

摘要:计算机辅助工艺设计(CAPP)彻底改变了传统手工设计的落后面貌;它在现代自动化集成制造系统中起着极其重要的作用。对CAPP系统模式的探讨和CAPP技术的研究是制造业的重要任务。本文总结了CAPP系统的概念和分类,总结了CAPP的发展趋势及存在问题,详细综述了CAPP系统在制造业信息化建设中的应用。 关键词:CAPP系统、发展概况、制造业应用 计算机辅助工艺设计(CAPP: Computer-aided process planning)是指在人和计算机组成的系统中,根据约束条件和资源条件,将零件的设计信息转换为制造零件所需的一系列加工操作,并人机交互或自动地生成零件的加工工艺规程,也即是将产品设计信息与制造环境提供的所有可能的加工能力信息进行匹配与优化的过程[1]。传统上CAPP是狭义的,它只面向零件,主要是机械加工工艺的设计,而且常常是车间一级的。后来逐步扩充到各种专业的工艺过程设计乃至工艺信息管理。 迄今为止,人们对CAPP的研究已进行了40多年,取得了许多重大的研究成果,获得了一定的经济效益,特别是将专家系统、神经网络和模糊逻辑等人工智能技术应用于CAPP之后,工艺知识获取、表达和运用的有效性和灵活性有了很大改观,CAPP系统的实用化和工程化水平得到了很大提高。 1.CAPP的发展概况 计算机辅助工艺设计的研究在国际上始于20世纪60年代后期,其早期意图就是建立包括工艺卡片生成、工艺内容存储及工艺规程检索在内的计算机辅助系统.它只是将计算机当作存储、整理、计算和提取信息的工具,以帮助减少工艺人员所做的事务性工作,从而节省工艺设计的时间。这样的系统因为没有工艺决策能力和排序功能,所以不具有通用性。 直到美国计算机辅助制造国际组织CAM-I于1976年开发出在CAPP发展史上具有里程碑意义的CAPP系统,计算机辅助工艺设计才正式命名为CAPP系统。1985年1月CIRP首次举行了CAPP专题研讨会,11月美国ASME冬季年会的

计算机辅助设计课程论文1

计算机辅助设计课程论文《ERP技术及其应用研究》 班级:计算机科学与技术专业09级4班学号: 3109090104221 姓名:夏克贺 日期: 2012年4月8日

ERP技术及其应用 夏克贺 (河南理工大学计算机学院河南焦作 454000) 摘要:本文主要结合老师对ERP技术的讲解及自己对ERP技术的理解,对服装贸易型企业ERP系统应用的实施研究并对相关内容进行了总结,通过剖析出口贸易企业ERP系统结构框架和核心业务流程。认为企业ERP系统实施的成功在于系统规划初期的选型和系统结构设计的核心业务的确定。Abstract: In this paper the teacher on the ERP technology and ERP technology to explain their understanding, the clothing trade enterprises ERP system application research and implementation of related content of the paper, through the analysis of the export trade enterprises ERP system framework and core business processes. Think the enterprise ERP system implementation success lies in system planning the initial selection and system design of the core business of identify 关键词: ERP,ERP系统应用, ActiveX,组件,动态链接库,面向对象 第一章前言 1.1背景 ERP (Enterprise Resource Planning,企业资源计划)是一种先进的管理方法和思想体系,是提高企业运作效率的有效工具。Gartner Group公司1990年提出了ERP的概念,SAP在1992年推出第一个ERP软件R/3,现在,ERP已成为最重要的企业管理信息系统。ERP建立在信息技术基础之上,利用现代企业先进的管理思想,全面集成企业经营管理活动中的物流、资金流、信息流、工作流,实现资源的优化配置。ERP能有效改善企业的管理水平和运作效率,并大大提高企业的经济效益和竞争力。APICS的统计资料表明,企业使用ERP系统后,延期交货可以减少80%,库存可以下降30%—50%,采购提前期能缩短50%,制造成本降低12%,停工待料减少60%,生产能力提高10%一15%,管理人员减少10%。在我国,ERP软件的主要目标市场是大型企业,但近年来越来越多的中小企业也开始关注ERP软件,ERP在中小企业的应用呈上升趋势然而,实施ERP是一项高成本高风险的投资,ERP系统的实施通常需要耗费几于万到几千万甚至数亿兀不等的巨额资金,其收益却取决于诸多因素。国内外很多企业在ERP系统的实施上花费了大量的人力、物力和财力,取得的收益却要比预期要小得多。 1.2.意义 学习研究ERP的根本目的是在学习、研究和应用国外现代企业管理思想和方法的基础上,尽快改变落后的企业管理模式,进而建立起一套新的符合市场经济体制的企业管理模式。企业应用ERP能够带动企业管理现代化,实现企业管理水平和生产力水平的跨越式发展,进

一元稀疏多项式计算器(数据结构)

【问题描述】 设计一个一元稀疏多项式简单计算器 【基本要求】 一元多项式简单计算器的基本功能是: 1,输入并建立多项式; 2,输出多项式,输出形式为整数序列:n,c1,e1,c2,c2,...,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列; 3,多项式a和b相加,建立多项式a+b; 4,多项式a和b相减,建立多项式a-b. 【测试数据】 1,(2x+5x^8-3.1x^11)+(7-5x^8+11x^9)=(-3.1x^11+11x^9+2x+7) 【实现提示】 用带表头结点的单链表存储多项式。 #include #include typedef struct node { float coef; int expn; struct node *next; }Lnode, *polynmial; void create(polynmial &L); //输入并建立多项式L void display(polynmial L); //显示,输出多项式L void sort(polynmial &L); //多项式L按指数排序 void reverse(polynmial &L); //逆置 void select(); //用户选择加减操作 void add(polynmial La, polynmial Lb, polynmial &Lc); //多项式La,Lb相加void subtract(polynmial La, polynmial Lb, polynmial &Ld); //多项式La减去Lb,结果给Ld void create(polynmial &L) //输入并建立多项式L { int i, n; static struct node *p; scanf("%d", &n); L = (struct node *)malloc (sizeof(struct node)); L->next = NULL; for(i = 0; i < n; i++) { p = (struct node *)malloc(sizeof(struct node)); scanf("%f %d", &p->coef, &p->expn); p->next = L->next; L->next = p; } }

计算机辅助设计课程论文

计算机辅助设计课程论文 ERP技术及其应用 摘要:ERP作为一种管理理念和软件系统,是利用计算机技术实现物 流、信息流与价值流一体化的控制,使数据在整个企业范围共享,对企业进行决策模拟。近年来,随着我国经济的快速发展,我国企业的ERP系统建设也取得了很大成效。但是由于我国企业在实施ERP系统过程中,仍存在诸多阻碍因素,导致企业ERP系统实施效率低下、发展缓慢。因此,本论文从ERP技术的发展历程出发,主要分析了国内外ERP现状,结合销售管理子系统模型分析国内企业应用ERP存在的主要问题、面对的风险及有效推进ERP系统的对策。 关键字:ERP、系统、对策 Abstract:ERP as a management philosophy and software systems, using computer technology, logistics, information flow and control of the value stream integration, to enable the sharing of data across the enterprise, the enterprise decision-making simulation. In recent years, with China's rapid economic development, China's enterprises ERP system has also made great achievements. However, due to China's enterprises in the process of implementing ERP systems, there are still many obstacles to ERP Implementation inefficient, slow development. Therefore, the departure from the course of the development of ERP technology, analysis of the ERP status quo at home and abroad, combined with the sales management subsystem model to analyze the main problems of the domestic enterprise applications, ERP, to face the risks and effective countermeasures to promote the ERP system. Keywords: ERP, systems, countermeasures

一元稀疏多项式计算器(数据结构)

院系:计算机科学学院 专业:软件工程 年级: 2013级 课程名称:数据结构 姓名:韦宜(201321092034)指导教师:宋中山 2015年 12 月 15日

题目:设计一个一元稀疏多项式简单计算器 班级:软件工程1301 姓名:韦宜学号:201321092034 完成日期:12月15日 一、需求分析 问题描述:设计一个一元多项式加法器 基本要求: 输入并建立多项式; (2)两个多项式相加; (3)输出多项式:n, c1, e1, c2, e2, …cn , en, 其中,n是多项式项数,ci和ei分别是第i 项的系数和指数,序列按指数降序排列。 (4)计算多项式在x处的值; (5)求多项式的导函数。 软件环境:Windows,UNIX,Linux等不同平台下的Visual C++ 6.0 硬件环境: 512MB内存,80Gb硬盘,Pentium4 CPU,CRT显示器。

二、概要分析 本程序有五个函数: PolyNode *Input()(输入函数); PolyNode *Deri(PolyNode *head)(求导函数); PolyNode * Plus(PolyNode *A,PolyNode *B)(求和函数); void Output(PolyNode*head)(输出函数); int main()(主函数) 本程序可使用带有附加头结点的单链表来实现多项式的链表表示,每个链表结点表示多项式的一项,命名为node,它包括两个数据成员:系数coef和指数exp,他们都是公共数据成员,*next为指针域,用链表来表示多项式。适用于不定的多项式,特别是对于项数再运算过程中动态增长的多项式,不存在存储溢出的问题。其次,对于某些零系数项,在执行加法运算后不再是零系数项,这就需要在结果多项式中增添新的项;对于某些非零系数项,在执行加法运算后可能是零系数项,这就需要在结果多项式中删去这些项,利用链表操作,可以简单的修改结点的指针以完成这种插入和删除运算(不像在顺序方式中那样,可能移动大量数据项)运行效率高。

一元稀疏多项式计算器实验

一元稀疏多项式计数器预习报告 姓名:刘茂学号2220 一、实验要求 (1)输入并建立多项式; (2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……cn,en,其中n是多项式的项数,ci,ei分别为第i项的系数和指数。序列按指数降序排列; (3)多项式a和b相加,建立多项式a+b; (4)多项式a和b相减,建立多项式a-b。 (5)多项式求值; (6)多项式求导; (7)求多项式的乘积。 二、测试数据: 1、(2x+5x^^11)+(7-5x^8+11x^9)=^11+11x^9+2x+7); 2、(6x^-3-x+^^9+^9)-(-6x^-3+^2-x^2+^15 )=^^9+12x^-3-x); 3、(1+x+x^2+x^3+x^4+x^5)+(-x^3-x^4)=(1+x+x^2+x^5); 4、(x+x^3)+(-x-x^3)=0; 5、(x+x^100)+(x^100+x^200)=(x+2x^100+x^200); 6、(x+x^2+x^3)+0=x+x^2+x^3. 7、互换上述测试数据中的前后两个多项式。 三、思路分析 用带表头结点的单链表存储多项式。 本程序要求输入并建立多项式,能够降幂显示出多项式,实现多项式相加相减的计算问题,输出结果。

采用链表的方式存储链表,定义结点结构体。运用尾差法建立两条单链表,以单链表polyn p和polyn h分别表示两个一元多项式a和b。 为实现处理,设p、q分别指向单链表polya和polyb的当前项,比较p、q 结点的指数项。 ① 若p->expnexpn,则结点p所指的结点应是“和多项式”中的一项,令指针p后移。 ② 若p->expn=q->expn,则将两个结点中的系数相加,当和不为0时修改结点p的系数。 ③ 若p->expn>q->expn,则结点q所指的结点应是“和多项式”中的一项,将结点q插入在结点p之前,且令指针q在原来的链表上后移。 四、实验程序 //头文件 #include<> #include<> #include<> //定义多项式的项 typedef struct Polynomial{ float coef; int expn; struct Polynomial *next; }*Polyn,Polynomial; void Insert(Polyn p,Polyn h){ if(p->coef==0) free(p);//系数为0的话释放结点 else

计算机辅助设计现状及展望[1].doc2(1)

云南经贸外事职业学院 毕业论文 题目计算机辅助设计现状及展望系部工程与机电系 班级 09级工程造价(2)班 专业工程造价 姓名张晓艳 指导教师杨滔 2012年 3 月 10 日

目录 一、内容摘要------------------------------------1 二、计算机辅助设计的简介及起源、发展---------------------2 三、计算机辅助设计的应用---------------------------------3 四、计算机辅助设计的发展趋势-----------------------------4 五、参考文献---------------------------------------------6

计算机辅助设计现状及展望 内容摘要:计算机辅助设计(CAD-Computer Aided Design)这一概念是由麻省理工学院的一个CAD开发小组率先于20世纪60年代初提出的。本文通过概括当前建筑领域计算面辅助设计,CA D软件的优缺点及发展的核心竞争力。并且研究了该软件在实际情况中的运用。同时提出了计算机建筑辅助设计CAD软件进一步发展所应具备的条件。同时让大家意识到计算机辅助设计CAD软件在未来建筑设计中的重要性。 关键词:辅助设计建筑领域 一、计算机辅助设计的简介及起源、发展: (一)计算机辅助设计的简介 计算机辅助设计(CAD-Computer Aided Design)指利用计算机及其图形设备帮助设计人员进行设计工作。在设计中通常要用计算机对不同方案进行大量的计算、分析和比较,以决定最优方案;各种设计信息,不论是数字的、文字的或图形的,都能存放在计算机的内存或外存里,并能快速地检索;设计人员通常用草图开始设计,将草图变为工作图的繁重工作可以交给计算机完成;由计算机自动产生的设计结果,可以快速作出图形,使设计人员及时对设计作出判断和修改;利用计算机可以进行与图形的编辑、放大、缩小、平移和旋转等有关的图形数据加工工作。 (二)计算机辅助设计的起源 计算机辅助设计(CAD-Computer Aided Design)这一概念是由麻省理工学院的一个CAD开发小组率先于20世纪60年代初提出的。1967年,美国洛克希德公司开发出商用的CADAM系统,CAD的利用(主要在航空、汽车以及船舶制造领域)开始进入了实用化阶段。不过当时绝大多数的CAD系统都是自行开发自行使用为主,而且往往是针对某个课题独立研发,针对具体使用目的编制专业程序来完成设计的自动化,因此无法将设计者的意图及时反映到设计中去。到了70年代中期,计算机的主流由大型机向个人机以及微型机的方向转变,CAD系统的开发者与使用者开始分化,出现了专业的CAD系统开发商。进入80年代,CAD 与微型机以及工作站相结合,不仅在CAD利用的传统领域诸如机械、电子电路等方面不断发展,而且在建筑产业、家用电器等工业设计领域呈现出多样化的利用形态。80年代后期,CAD与计算机图形处理技术(CG-Computer Graphics)相融合,由2维平面制图系统向生产加工数据用的3维CAD系统方向飞速发展。进入90年代后期,随着网络技术的迅猛发展为CAD的集成与协同提供了强有力的支持,使得并行工程处理作业成为可能。以工程项目为核心,不同地域的生产“虚拟群体”能及时地共享图形库、数据库、材料库及一切上网资源。

相关文档
相关文档 最新文档