用于输入和输出多项式的c++函数该怎么编
展开全部
这个还要看你具体要干什么,我举个通用的吧。
1.一元多项式
int YourFunc(double* Modulus,int& ModuluCnt,double X)
解释:
int 返回值,类型视你需要而定,我只是举了个例子为int
Modulus 系数数组,它是一个double数组
ModuluCnt 系数的个数(也就是项数)
X 自变量X的取值,如果你不需要知道X的值,请省去该参数
换句话说,Modulus和ModuluCnt两个参数就可以描述任何一个一元多项式。
2.若果是多元的,比如XYZ三元,则要复杂一些,用一个结构体来描述某一项:
struct Item
{
double Modulu;//该项系数
int X_Time;//X的次数
int Y_Time;//Y的次数
int Z_Time;//Z的次数
};
然后函数原型就变成了:
int YourFunc(Item* Modulus,int& ModuluCnt,double X,double Y,double Z)
解释:
int 返回值,类型视你需要而定,我只是举了个例子为int
Modulus 系数数组,它是一个Item结构体的数组
ModuluCnt 系数的个数(也就是项数)
X ,Y,Z 自变量X ,Y,Z 的取值,如果你不需要知道X ,Y,Z 的值,请省去该参数
另外,由于Modulus和ModuluCnt分别使用了数组(指针)和左值(可以取地址的值)类型,所以它们同时也可用作输出。在这一点上若有疑问,请翻阅C语言相关教材。
至此,LZ的要求已经实现……
完全手打,希望对你有帮助!!!
1.一元多项式
int YourFunc(double* Modulus,int& ModuluCnt,double X)
解释:
int 返回值,类型视你需要而定,我只是举了个例子为int
Modulus 系数数组,它是一个double数组
ModuluCnt 系数的个数(也就是项数)
X 自变量X的取值,如果你不需要知道X的值,请省去该参数
换句话说,Modulus和ModuluCnt两个参数就可以描述任何一个一元多项式。
2.若果是多元的,比如XYZ三元,则要复杂一些,用一个结构体来描述某一项:
struct Item
{
double Modulu;//该项系数
int X_Time;//X的次数
int Y_Time;//Y的次数
int Z_Time;//Z的次数
};
然后函数原型就变成了:
int YourFunc(Item* Modulus,int& ModuluCnt,double X,double Y,double Z)
解释:
int 返回值,类型视你需要而定,我只是举了个例子为int
Modulus 系数数组,它是一个Item结构体的数组
ModuluCnt 系数的个数(也就是项数)
X ,Y,Z 自变量X ,Y,Z 的取值,如果你不需要知道X ,Y,Z 的值,请省去该参数
另外,由于Modulus和ModuluCnt分别使用了数组(指针)和左值(可以取地址的值)类型,所以它们同时也可用作输出。在这一点上若有疑问,请翻阅C语言相关教材。
至此,LZ的要求已经实现……
完全手打,希望对你有帮助!!!
参考资料: 无
展开全部
#include <stdio.h>
#include<malloc.h>
typedef struct
{
float coef;//系数
int expn;//指数
}
ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}
LNode,*LinkList;
LinkList InitList()//创建链表
{
LinkList L;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
return(L);
}
void Creat(LinkList L,ElemType x)//创建多项式
{
LinkList s,p;
s=(LinkList)malloc(sizeof(LNode));
s->data=x;
p=L;
while(p->next)
p=p->next;
s->next=NULL;
p->next=s;
}
void Insert(LinkList L,LNode p)//插入链表
{
LinkList q,pc;
pc=(LinkList)malloc(sizeof(LNode));
*pc=p;
q=L;
while(q->next)
q=q->next;
pc->next=q->next;
q->next=pc;
}
void AddPolyn(LinkList pa,LinkList pb,LinkList pc)//多项式求和
{
LinkList qa,qb;
LNode qc;
float sum;
int a,b;
qa=pa->next;
qb=pb->next;
while(qa&&qb)
{
a=qa->data.expn;
b=qb->data.expn;;
if(a<b)
{
Insert(pc,*qa);
qa=qa->next;
}
if(a==b)
{
sum=qa->data.coef+qb->data.coef;
if(sum!=0)
{
qc=*qa;
qc.data.coef=sum;
Insert(pc,qc);
qa=qa->next;
qb=qb->next;
}
else
{
qa=qa->next;
qb=qb->next;
}
}
if(a>b)
{
Insert(pc,*qb);
qb=qb->next;
}
while(qa)
{
Insert(pc,*qa);
qa=qa->next;
}
while(qb)
{
Insert(pc,*qb);
qb=qb->next;
}
}
}
void Print(LinkList L)//输出多项式
{
LinkList p;
p=L->next;
while(p->next)
{
printf("%fx^%d+",p->data.coef,p->data.expn);
p=p->next;
}
printf("%fx^%d",p->data.coef,p->data.expn);
}
void main()//主函数
{
LinkList La,Lb,Lc,Ld;ElemType c;
int a,i;
La=InitList();
Lb=InitList();
Lc=InitList();
Ld=InitList();
printf("输入La的项数:");
scanf("%d",&a);
for(i=0;i<a;i++)
{
printf("输入La第%d项系数和指数:",i+1);
scanf("%f%d",&c.coef,&c.expn);
Creat(La,c);
}
printf("输入Lb的项数:");
scanf("%d",&a);
for(i=0;i<a;i++)
{
printf("输入Lb第%d项系数和指数:",i+1);
scanf("%f%d",&c.coef,&c.expn);
Creat(Lb,c);
}
printf("La为");
printf("\n");
Print(La);
printf("\n");
printf("Lb为");
printf("\n");
Print(Lb);
printf("\n");
printf("多项式和为");
printf("\n");
AddPolyn(La,Lb,Lc);
Print(Lc);
printf("\n");
}
以前编过的给你吧
#include<malloc.h>
typedef struct
{
float coef;//系数
int expn;//指数
}
ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}
LNode,*LinkList;
LinkList InitList()//创建链表
{
LinkList L;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
return(L);
}
void Creat(LinkList L,ElemType x)//创建多项式
{
LinkList s,p;
s=(LinkList)malloc(sizeof(LNode));
s->data=x;
p=L;
while(p->next)
p=p->next;
s->next=NULL;
p->next=s;
}
void Insert(LinkList L,LNode p)//插入链表
{
LinkList q,pc;
pc=(LinkList)malloc(sizeof(LNode));
*pc=p;
q=L;
while(q->next)
q=q->next;
pc->next=q->next;
q->next=pc;
}
void AddPolyn(LinkList pa,LinkList pb,LinkList pc)//多项式求和
{
LinkList qa,qb;
LNode qc;
float sum;
int a,b;
qa=pa->next;
qb=pb->next;
while(qa&&qb)
{
a=qa->data.expn;
b=qb->data.expn;;
if(a<b)
{
Insert(pc,*qa);
qa=qa->next;
}
if(a==b)
{
sum=qa->data.coef+qb->data.coef;
if(sum!=0)
{
qc=*qa;
qc.data.coef=sum;
Insert(pc,qc);
qa=qa->next;
qb=qb->next;
}
else
{
qa=qa->next;
qb=qb->next;
}
}
if(a>b)
{
Insert(pc,*qb);
qb=qb->next;
}
while(qa)
{
Insert(pc,*qa);
qa=qa->next;
}
while(qb)
{
Insert(pc,*qb);
qb=qb->next;
}
}
}
void Print(LinkList L)//输出多项式
{
LinkList p;
p=L->next;
while(p->next)
{
printf("%fx^%d+",p->data.coef,p->data.expn);
p=p->next;
}
printf("%fx^%d",p->data.coef,p->data.expn);
}
void main()//主函数
{
LinkList La,Lb,Lc,Ld;ElemType c;
int a,i;
La=InitList();
Lb=InitList();
Lc=InitList();
Ld=InitList();
printf("输入La的项数:");
scanf("%d",&a);
for(i=0;i<a;i++)
{
printf("输入La第%d项系数和指数:",i+1);
scanf("%f%d",&c.coef,&c.expn);
Creat(La,c);
}
printf("输入Lb的项数:");
scanf("%d",&a);
for(i=0;i<a;i++)
{
printf("输入Lb第%d项系数和指数:",i+1);
scanf("%f%d",&c.coef,&c.expn);
Creat(Lb,c);
}
printf("La为");
printf("\n");
Print(La);
printf("\n");
printf("Lb为");
printf("\n");
Print(Lb);
printf("\n");
printf("多项式和为");
printf("\n");
AddPolyn(La,Lb,Lc);
Print(Lc);
printf("\n");
}
以前编过的给你吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |