| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2415 人关注过本帖
标题:关于一元多项式的加法程序(C++写的)
只看楼主 加入收藏
lijianbo
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-3-25
收藏
 问题点数:0 回复次数:4 
关于一元多项式的加法程序(C++写的)

已经编译过了 是正确的


9dwvt6AU.rar (2.78 KB) 关于一元多项式的加法程序(C++写的)


[此贴子已经被作者于2006-3-28 21:41:42编辑过]



6lEGi3OA.rar (2.78 KB) 关于一元多项式的加法程序(C++写的)

搜索更多相关主题的帖子: 多项式 加法 
2006-03-28 21:40
两个人的笨笨
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-3-29
收藏
得分:0 
解压不了啊,文件损坏了
2006-03-31 13:11
lijianbo
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-3-25
收藏
得分:0 
一元多项式的加法代码

对不起 文件是损坏了 我现在把代码贴了出来。给大家带来的不便,我深表歉意!
关于一元多项式的加法的代码:
#include<iostream.h>
struct Term //定义结点结构
{

Term(int c,int e){link=NULL;}

Term(int c,int e,Term* next)
{
coef=c;
exp=e;
link=next;
}
Term * InsertAfter(int c,int e);
int c;
int e;
int coef;
int exp;
Term *link;


};

class Polynominal//定义多项式类
{

public:
Polynominal();
~Polynominal(){delete theList;};

void AddTerms(istream& in);
void Output(ostream& out)const;
void PolyAdd(const Polynominal& r);
Polynominal& operator+(const Polynominal& x);

void operator=(const Polynominal&x);

private:
int coef,exp;

Term* theList;
friend ostream& operator<<(ostream& output,const Polynominal&);
friend istream& operator>>(istream&,Polynominal&);
friend int ExpComp(int x,int y);

};

Term* Term::InsertAfter(int c,int e)//在结点的后面插入新的结点
{
link=new Term(c,e,link);
return link;
}

Polynominal::Polynominal()
{
theList=new Term(0,-1);
theList->link=theList;
}

void Polynominal::AddTerms(istream& in)//注意此处是输入函数,输入两个整数c和e,分别是多项式的系数和指数
{
Term* q=theList;
int c,e;
for(;;)
{
cout<<"Input a term(coef,exp):\n"<<endl;
in>>c>>e;此处是输入的值
if(e<0) break;//如果输入的e值是负数,停止输入;
q=q->InsertAfter(c,e);
}
}

void Polynominal::Output(ostream& out)const
{
bool start=true;
Term *p=theList->link;
out<<"The polynominal is:\n"<<endl;
for(;p!=theList;p=p->link)
{
if(!start&&p->coef>0) out<<'+';
start=false;
if(p->coef==0) out<<" ";
switch(p->exp){
case 0:out<<p->coef;break;
case 1:if(p->coef!=1) out<<p->coef;
out<<'X';break;
default:if(p->coef!=1) out<<p->coef;
out<<'X'<<'^'<<p->exp;break;
}
}
out<<endl;
}
int ExpComp(int x,int y)
{
if(x==y) return 0;
else if(x>y) return 1;
else return -1;
}
void Polynominal::PolyAdd(const Polynominal& r)
{
Term* q2,

*q1=theList,*q=theList->link,
*p=r.theList->link;
while(p->exp >=0){
switch(ExpComp(p->exp,q->exp)){
case -1:q1=q;q=q->link;break;
case 0:q->coef=q->coef+p->coef;
if(q->coef==0){
q2=q;q1->link=q->link;
q=q->link;p=p->link;
delete(q2);
}
else{
q1=q;q=q->link;p=p->link;
}
break;
case 1:
q1=q1->InsertAfter(p->coef,p->exp);
p=p->link;break;
}
}
}
void Polynominal::operator=(const Polynominal& x)
{
if(this==&x) return;
Term *q=theList,*p=x.theList->link,*r=NULL;
for(q=q->link;q!=theList;q=r){
r=q->link;delete q;
}
theList->link=theList;
for(;p!=x.theList;p=p->link)
q=q->InsertAfter(p->coef,p->exp);
}
Polynominal& Polynominal::operator+(const Polynominal& b)
{
PolyAdd(b);
return *this;
}

ostream& operator<<(ostream &out,const Polynominal &x)
{
x.Output(out);
return out;
}
istream& operator>>(istream& in,Polynominal &x)
{
x.AddTerms(in);
return in;
}
void main()
{

Polynominal p,q;
cin>>p;//当输入的q多项式的e值是负数的时候,完成第一个多项式的输入
cout<<p;
cin>>q;//当输入的p多项式的e值是负数的时候,完成第二个多项式的输入
cout<<q;
q=q+p;cout<<q;
}

程序运行时,
首先输入第一个多项式的表达式。例如5 2(表示5x^2);
然后输入6 -1,输入后因为e值小于0,则第一个多项式输入完毕。
接着输入第二个多项式的表达式,可仿照第一个多项式的输入方法。

[此贴子已经被作者于2006-4-5 22:57:01编辑过]

2006-04-01 17:06
飞在天上的鱼
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2005-11-6
收藏
得分:0 
真希望你的程序在加点注解!
我的编译器不管你输入什么都输出一句话"Input a term(coef,exp)"

[此贴子已经被作者于2006-4-5 18:06:38编辑过]


2006-04-04 23:04
ykhui
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-10-5
收藏
得分:0 

我在编译器不关输入什么都是"Input a term<coef,exp>"
这是为什么?请解决以下!!


2006-10-05 15:51
快速回复:关于一元多项式的加法程序(C++写的)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029844 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved