一元多项式

//一元多项式

#include

#include

using namespace std;

#define MAX 1000

typedef struct

{

int a[MAX];

int len;

}ST;

void ADD(ST A,ST B,ST *C)

{

int la=A.len,lb=B.len,i;

C->len=la>lb? la:lb;

for(i=0 ; i

{

C->a[i]=A.a[i]+B.a[i];

}

while(i

{

C->a[i]=A.a[i];

i++;

}

while(i

{

C->a[i]=B.a[i];

i++;

}

}

void SUB(ST A,ST B,ST *C)

{

int la=A.len,lb=B.len,i;

C->len=la>lb? la:lb;

for(i=0 ; i

{

C->a[i]=A.a[i]-B.a[i];

}

while(i

{

C->a[i]=A.a[i];

i++;

}

while(i

{

C->a[i]=0-B.a[i];

i++;

}

}

void MUL(ST A,ST B,ST *C)

{

int i,j;

for(i=0 ; i

C->a[i]=0;

for(i=0;i

{

for(j=0;j

{

C->a[i+j]+=A.a[i]*B.a[j];

}

}

C->len=A.len+B.len;

}

void DER(ST A,ST *C)

{

int len=A.len,i=1;

while(i

{

C->a[i-1]=A.a[i]*i;

i++;

}

C->len=A.len-1;

}

void Get(ST *A)

{

int i,coef,ex,maxe=0;

char ch;

printf("请输入系数和指数,当输入指数为-1时结束:\n");

for(i=0;i

A->a[i]=0;

scanf("%d %d",&coef,&ex);

while(ex>=0)

{

if(ex>maxe)

maxe=ex;

if(A->a[ex]!=0)

{

printf("项存在,是否更新?Y/N\n");

cin>>ch;

if(ch=='Y'||ch=='y')

{

A->a[ex]=coef;

printf("已更新,请继续输入\n");}

else

printf("请继续输入\n");;

}

else A->a[ex]=coef;

scanf("%d %d",&coef,&ex);

}

A->len=maxe;

return ;

}

void Print(ST C)

{

int i;

printf(" %dx^%d ",C.a[C.len],C.len);

for(i=C.len-1;i>=1;i--)

{

if(C.a[i]==0) ;

else if(C.a[i]==1)

printf(" + x^%d ",i);

else if(C.a[i]==-1)

printf(" - x^%d ",i);

else

{

if(C.a[i]>0)

printf("+ %dx^%d ",C.a[i],i);

else

printf("- %-dx^%d ",-C.a[i],i);

}

}

if(C.a[0]==0) ;

else if(C.a[0]>0)

printf(" + %d",C.a[0]);

else

printf(" - %d",-C.a[0]);

printf("\n");

}

int main()

{

ST A,B,C;

printf("请输入A(x):\n");

Get(&A);

printf("请输入B(x):\n");

Get(&B);

printf("A(x)=");

Print(A);

DER(A,&C);

printf("A(x)'=");

Print(C);

cout

printf("B(x)=");

Print(B);

DER(B,&C);

printf("B(x)'=");

Print(C);

cout

printf("A(x)+B(x)=");

ADD(A,B,&C);

Print(C);

DER(C,&C);

printf("(A(x)+B(x))'=");

Print(C);

cout

printf("A(x)-B(x)=");

SUB(A,B,&C);

Print(C);

DER(C,&C);

printf("(A(x)-B(x))'=");

Print(C);

cout

printf("A(x)*B(x)=");

MUL(A,B,&C);

Print(C);

DER(C,&C);

printf("(A(x)*B(x))'=");

Print(C);

return 0;

}

//一元多项式

#include

#include

using namespace std;

#define MAX 1000

typedef struct

{

int a[MAX];

int len;

}ST;

void ADD(ST A,ST B,ST *C)

{

int la=A.len,lb=B.len,i;

C->len=la>lb? la:lb;

for(i=0 ; i

{

C->a[i]=A.a[i]+B.a[i];

}

while(i

{

C->a[i]=A.a[i];

i++;

}

while(i

{

C->a[i]=B.a[i];

i++;

}

}

void SUB(ST A,ST B,ST *C)

{

int la=A.len,lb=B.len,i;

C->len=la>lb? la:lb;

for(i=0 ; i

{

C->a[i]=A.a[i]-B.a[i];

}

while(i

{

C->a[i]=A.a[i];

i++;

}

while(i

{

C->a[i]=0-B.a[i];

i++;

}

}

void MUL(ST A,ST B,ST *C)

{

int i,j;

for(i=0 ; i

C->a[i]=0;

for(i=0;i

{

for(j=0;j

{

C->a[i+j]+=A.a[i]*B.a[j];

}

}

C->len=A.len+B.len;

}

void DER(ST A,ST *C)

{

int len=A.len,i=1;

while(i

{

C->a[i-1]=A.a[i]*i;

i++;

}

C->len=A.len-1;

}

void Get(ST *A)

{

int i,coef,ex,maxe=0;

char ch;

printf("请输入系数和指数,当输入指数为-1时结束:\n");

for(i=0;i

A->a[i]=0;

scanf("%d %d",&coef,&ex);

while(ex>=0)

{

if(ex>maxe)

maxe=ex;

if(A->a[ex]!=0)

{

printf("项存在,是否更新?Y/N\n");

cin>>ch;

if(ch=='Y'||ch=='y')

{

A->a[ex]=coef;

printf("已更新,请继续输入\n");}

else

printf("请继续输入\n");;

}

else A->a[ex]=coef;

scanf("%d %d",&coef,&ex);

}

A->len=maxe;

return ;

}

void Print(ST C)

{

int i;

printf(" %dx^%d ",C.a[C.len],C.len);

for(i=C.len-1;i>=1;i--)

{

if(C.a[i]==0) ;

else if(C.a[i]==1)

printf(" + x^%d ",i);

else if(C.a[i]==-1)

printf(" - x^%d ",i);

else

{

if(C.a[i]>0)

printf("+ %dx^%d ",C.a[i],i);

else

printf("- %-dx^%d ",-C.a[i],i);

}

}

if(C.a[0]==0) ;

else if(C.a[0]>0)

printf(" + %d",C.a[0]);

else

printf(" - %d",-C.a[0]);

printf("\n");

}

int main()

{

ST A,B,C;

printf("请输入A(x):\n");

Get(&A);

printf("请输入B(x):\n");

Get(&B);

printf("A(x)=");

Print(A);

DER(A,&C);

printf("A(x)'=");

Print(C);

cout

printf("B(x)=");

Print(B);

DER(B,&C);

printf("B(x)'=");

Print(C);

cout

printf("A(x)+B(x)=");

ADD(A,B,&C);

Print(C);

DER(C,&C);

printf("(A(x)+B(x))'=");

Print(C);

cout

printf("A(x)-B(x)=");

SUB(A,B,&C);

Print(C);

DER(C,&C);

printf("(A(x)-B(x))'=");

Print(C);

cout

printf("A(x)*B(x)=");

MUL(A,B,&C);

Print(C);

DER(C,&C);

printf("(A(x)*B(x))'=");

Print(C);

return 0;

}


相关文章

  • 数据结构课程设计[一元多项式的四则运算]
  • 一元多项式的四则运算 学生姓名:XX 指导老师:XX 摘 要 本课程设计主要解决一元多项式的运算问题,通过链表的使用,实现对一元多项式的构建.录入.存储.打印.以及之间的运算.在本课程设计中,程序设计语言为C++语言,程序运行平台为Wind ...查看


  • 本科毕业论文_多项式方程的判别式与求根公式
  • 东 莞 理 工 学 院 本 科 毕 业 论 文 (2015届) 题 目: 多项式方程的判别式与求根公式 学生姓名: 姚培基 学 号: [1**********]0 院(系): 计算机学院 专业班级: 信息与计算科学(2)班 指导教师: 起止 ...查看


  • 一元稀疏多项式的计算
  • 实验一 一元稀疏多项式的计算 一.实验目的 通过一元稀疏多项式的表示和计算,帮助学生熟练掌握线性表的基本操作,以及用线性链表表示线性表的存储结构和操作的实现. 二.实验内容 实现一元稀疏多项式的如下运算: (1)两个一元稀疏多项式相加运算 ...查看


  • 数据结构多项式
  • 中国地质大学长城学院 实践课程设计 题 目 学 院 专 业 班 级 姓 名 指导教师 用单链表表示一元多项式,并求2个一元多项式的和 中国地质大学长城学院 电子信息工程 电子1201 李月朋 李润亚 2014 年 12 月 31 日 一.实 ...查看


  • 苏教版初中数学原教材与新教材目录对照表
  • 苏教版初中数学原教材与新教材目录对照表 原教材 第一章 1.1生活 数学 新教材 第一章 数学与我们同行 1.1生活 数学 1.2活动 思考 2.1正数与负数 2.2有理数与无理数 2.3数轴 2.4绝对值与相反数 第二章有理数 2.5有理 ...查看


  • 初中数学 华东师大版 目录内容
  • 华东师大版初中数学按章节目录 七年级上 第1章 走进数学世界 §1.1 从实际问题到方程:1. 数学伴我们成长:2. 人类离不开数学:3. 人人都能学会数学:阅读材料 华罗庚的故事:视数学为生命的陈景润:少年高斯的速算: §1.2 让我们来 ...查看


  • 一元一次函数
  • 1.单项式:在代数式中,若只含有乘法(包括乘方)运算.或虽含有除法运算,但除式中不含字母的一类代数式叫单项式. 数字或字母的乘积叫单项式(单独的一个数字或字母也是单项式).单项式中的数字因数叫做这个单项式的系数.所有字母的指数之和叫做这个单 ...查看


  • 一元多项式的根与韦达定理
  • 12. 一元多项式的根与韦达定理 万芸芸 [1**********] [知识总结] 一.一元多项式的根 定义:令 f(x)是 R[x]的一个一元多项式而 c 是 R 的一个数,若是当 x=c 是 f(x) 的值 f(c)=0,那么 c叫作 ...查看


  • 初中数学课本目录
  • 七年级(上册) 第一章:我们与数学同行 1.1 生活 数学 1.2 活动 思考 第二章:有理数 2.1 比0小的数 2.2 数轴 2.3 绝对值与相反数 2.4 有理数的加法与减法 2.5 有理数的乘法与除法 2.6 有理数的乘方 2.7 ...查看


  • 初中教材介绍
  • 七年级上册 第1章 有理数 1.1具有相反意义的量 1.2数轴.相反数与绝对值 1.3有理数大小的比较 1.4有理数的加法和减法 1.5有理数的乘法和除法 1.6有理数的乘方 1.9有理数的混合运算 第2章 代数式 2.1用字母表示数 2. ...查看


热门内容