一个一元稀疏多项式简单计算器课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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->expn
>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) {