一个一元稀疏多项式简单计算器课程设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一个一元稀疏多项式简单计算器课程设计报告课程课课课告学院,

课程名,称

课课班课,

学生姓名, ,学号

目课

1 一元稀疏多课式课算器

1.1 述概

课了课课任意多课式的加法~法~因此课课课课表的课~有一系~指~下减构体它个数数一指课个个元素3

使用课言,课言C

课课课境,VC++ 6.0

1.2 课课容内

、课课描述1

课课一一元稀疏多课式课课课算器。个

基本要求,一元稀疏多课式课课课算器的基本功能是,

;,课入建立多课式~并1

;,课出多课式~课出形式课整序列,数~其中是多课式

2n,c1,e1,c2,e2,…cn,en,n

的课~数分课是第课的系和指~序按指降序排序~数数数数c1,e1,i

;,多课式和相加~建立多课式3aba+b;

;,多课式和相~建立多课式减4aba-b;

;,课算多课式在课的课~5x

;,课算器的界面;课做,。仿真6

、需求分析2

;,课入的形式和课入课的范课,1

课入是课课课入的~课入的容课多课式的系和指~课任意的整~指课大于从内数数数数数

等于的整数0

;,课出的形式2

从屏并减幕课出~课示用课课入的多课式~课示多课式加以后的多课式的课。

;,程序所能到的功能达3

,课入建立多课式~并a

,课出多课式~课出形式课整序列,数其中是多课式的课数~

bn,c1,e1,c2,e2,……,cn,en,n

和分课是第课的系和指~序列按指降序排列~数数数cieii

,多课式和相加~建立多课式~caba+b,多课式和相~建立多课式减~daba-b,多课式的课出形式课课表式~数学达e

,系课课数的非零课的课出形式中略去系数~而的课出形式课。f11-1x-x

1.3 要课课概

、存课课构1

typedef struct Polynomial { float coef; int expn; struct Polynomial *next;

}*Polyn,Polynomial;

课课用以存放第构体课的系和指和下一指课~以课课课基课。数数个i

、函数2

Polyn CreatePolyn(Polyn head,int m)课函用于建立一课指课课数个~课课数的一元多课式headm

课函用于课毁多课式数void DestroyPolyn(Polyn p)

课函用于课出多课式数void PrintPolyn(Polyn P) a

Polyn AddPolyn(Polyn pa,Polyn pb)课函用于求解建立多课式数并~返回其课指课a+b

Polyn SubtractPolyn(Polyn pa,Polyn pb)

课函用于求解建立多课式数并~返回其课指课a-b

float ValuePolyn(Polyn head,int x)课函用于课入数课~课算返回多课式的课并x

课函用于比课数和的指数int compare(Polyn a,Polyn b) ab

、流程课3

一元稀疏多课式课算器

课入建立多课式并

课出多课式

课算多课式在x

课的课

课算a+b课算a-b

课束

1.4 课课分析

1、课课分析

2、行课果运

1.5 源程序代课

#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); else { Polyn

q1,q2; q1=h; q2=h->next; while(q2&&p->expnexpn) { q1=q2; q2=q2-

>next; }

if(q2&&p->expn==q2->expn) { q2->coef+=p->coef; free(p);

if(!q2->coef){q1->next=q2->next;free(q2);}}else{p->next=q2;q1-

>next=p; } } } Polyn CreatePolyn(Polyn head,int m) { int i; Polyn p;

p=head=(Polyn)malloc(sizeof(struct Polynomial)); head->next=NULL;

for(i=0;i

课课入第课的系指数与数用空格隔课printf("%d ,:",i+1);

scanf("%f %d",&p->coef,&p->expn); Insert(p,head); } return head; } void DestroyPolyn(Polyn p) {Polyn q1,q2; q1=p->next; q2=q1->next;

while(q1->next) { free(q1); q1=q2; q2=q2->next; } }

void PrintPolyn(Polyn P) {Polyn q=P->next; int flag=1;

if(!q) { putchar('0'); printf("\n"); return; } while(q) { if(q-

>coef>0&&flag!=1) putchar('+'); if(q->coef!=1&&q->coef!=-1)

{ printf("%g",q->coef);

if(q->expn==1) putchar('X'); else if(q->expn) printf("X^%d",q-

>expn); }

else { if(q->coef==1) { if(!q->expn) putchar('1');

else if(q->expn==1) putchar('X'); else printf("X^%d",q->expn); }

if(q->coef==-1) { if(!q->expn) printf("-1"); else if(q->expn==1)

printf("-X");

else printf("-X^%d",q->expn); } } q=q->next; flag++; } printf("\n");} int compare(Polyn a,Polyn b) { if(a&&b) {

相关文档
最新文档