多项式的加法与乘法(C++实现)
2008-10-30 18:19
417 查看
.h文件:
class term
{//多项式的项
public:
int coef;//多项式的系数
int exp;//多项式的指数
term(int c=0,int e=0):coef(c),exp(e){};
};
class PolyArith
{//多项式类,实现多项式的加法和乘法
private:
list<term> m_poly_list_first;//存储第一个多项式
list<term> m_poly_list_second;//存储第二个多项式
list<term> m_poly_list_result;//存储运算结果
list<term> Poly_Add(list<term>& poly_list_first,list<term>& poly_list_second);//私有成员函数,供乘法调用
public:
PolyArith();
~PolyArith();
void Poly_input();//多项式的输入函数
void Poly_output();//多项式的输出函数
void Poly_add();//多形式加法函数
void Poly_multi();//多项式乘法
};
.cpp:
PolyArith::PolyArith()
{
}
list<term> PolyArith::Poly_Add(list<term>& poly_list_first,list<term>& poly_list_second)
{
list<term> poly_list_result;
list<term>::iterator iter_first=poly_list_first.begin();
list<term>::iterator iter_second=poly_list_second.begin();
while((iter_first!=poly_list_first.end())&&(iter_second!=poly_list_second.end()))
{
term t_tmp;
term t_first=(term)*iter_first;
term t_second=(term)*iter_second;
if(t_first.exp>t_second.exp)
{
poly_list_result.push_back(t_first);
iter_first++;
}
else if(t_second.exp>t_first.exp)
{
poly_list_result.push_back(t_second);
iter_second++;
}
else
{
t_tmp.coef=t_first.coef+t_second.coef;
if(t_tmp.coef!=0)
{
t_tmp.exp=t_first.exp;
poly_list_result.push_back(t_tmp);
}
iter_first++;
iter_second++;
}
}
for(;iter_first!=poly_list_first.end();iter_first++)
poly_list_result.push_back(*iter_first);
for(;iter_second!=poly_list_second.end();iter_second++)
poly_list_result.push_back(*iter_second);
return poly_list_result;
}
void PolyArith::Poly_input()
{
//输入函数,用于输入多项式
int n;
cout<<"请输入第一个多项式的项数:";
cin>>n;
cout<<"按降幂输入第一个多项式的每一项的系数和指数:"<<endl;
for(int i=1;i<=n;i++)
{
term t_tmp;
cout<<"请输入第"<<i<<"项系数和指数;"<<endl;
cin>>t_tmp.coef;
cin>>t_tmp.exp;
m_poly_list_first.push_back(t_tmp);
}
n=0;
cout<<"请输入第二个多项式的项数:";
cin>>n;
cout<<"按降幂输入第二个多项式的每一项的系数和指数:"<<endl;
for(int j=1;j<=n;j++)
{
term t_tmp;
cout<<"请输入第"<<j<<"项系数和指数;"<<endl;
cin>>t_tmp.coef;
cin>>t_tmp.exp;
m_poly_list_second.push_back(t_tmp);
}
}
void PolyArith::Poly_output()
{
list<term>::iterator iter=m_poly_list_first.begin();
cout<<"第一个多项式是:"<<endl;
for(;iter!=m_poly_list_first.end();)
{
term t_tmp=*iter;
cout<<t_tmp.coef<<"x^"<<t_tmp.exp;
if(++iter!=m_poly_list_first.end())
cout<<"+";
}
cout<<endl;
iter=m_poly_list_second.begin();
cout<<"第二个多项式是:"<<endl;
for(;iter!=m_poly_list_second.end();)
{
term t_tmp=*iter;
cout<<t_tmp.coef<<"x^"<<t_tmp.exp;
if(++iter!=m_poly_list_second.end())
cout<<"+";
}
cout<<endl;
iter=m_poly_list_result.begin();
cout<<"结果是:"<<endl;
for(;iter!=m_poly_list_result.end();)
{
term t_tmp=*iter;
cout<<t_tmp.coef<<"x^"<<t_tmp.exp;
if(++iter!=m_poly_list_result.end())
cout<<"+";
}
cout<<endl;
}
void PolyArith::Poly_add()
{
list<term>::iterator iter_first=m_poly_list_first.begin();
list<term>::iterator iter_second=m_poly_list_second.begin();
while((iter_first!=m_poly_list_first.end())&&(iter_second!=m_poly_list_second.end()))
{
term t_tmp;
term t_first=(term)*iter_first;
term t_second=(term)*iter_second;
if(t_first.exp>t_second.exp)
{
m_poly_list_result.push_back(t_first);
iter_first++;
}
else if(t_second.exp>t_first.exp)
{
m_poly_list_result.push_back(t_second);
iter_second++;
}
else
{
t_tmp.coef=t_first.coef+t_second.coef;
if(t_tmp.coef!=0)
{
t_tmp.exp=t_first.exp;
m_poly_list_result.push_back(t_tmp);
}
iter_first++;
iter_second++;
}
}
for(;iter_first!=m_poly_list_first.end();iter_first++)
m_poly_list_result.push_back(*iter_first);
for(;iter_second!=m_poly_list_second.end();iter_second++)
m_poly_list_result.push_back(*iter_second);
}
void PolyArith::Poly_multi()
{
list<term> poly_list_result;
list<term>::iterator iter_first=m_poly_list_first.begin();
for(;iter_first!=m_poly_list_first.end();iter_first++)
{
list<term> poly_list_tmp;
list<term>::iterator iter_second=m_poly_list_second.begin();
for(;iter_second!=m_poly_list_second.end();iter_second++)
{
term t_tmp;
term t_first=(term)*iter_first;
term t_second=(term)*iter_second;
t_tmp.coef=t_first.coef*t_second.coef;
t_tmp.exp=t_first.exp+t_second.exp;
poly_list_tmp.push_back(t_tmp);
}
poly_list_result=Poly_Add(poly_list_tmp,poly_list_result);
}
m_poly_list_result=poly_list_result;
}
PolyArith::~PolyArith()
{
}
class term
{//多项式的项
public:
int coef;//多项式的系数
int exp;//多项式的指数
term(int c=0,int e=0):coef(c),exp(e){};
};
class PolyArith
{//多项式类,实现多项式的加法和乘法
private:
list<term> m_poly_list_first;//存储第一个多项式
list<term> m_poly_list_second;//存储第二个多项式
list<term> m_poly_list_result;//存储运算结果
list<term> Poly_Add(list<term>& poly_list_first,list<term>& poly_list_second);//私有成员函数,供乘法调用
public:
PolyArith();
~PolyArith();
void Poly_input();//多项式的输入函数
void Poly_output();//多项式的输出函数
void Poly_add();//多形式加法函数
void Poly_multi();//多项式乘法
};
.cpp:
PolyArith::PolyArith()
{
}
list<term> PolyArith::Poly_Add(list<term>& poly_list_first,list<term>& poly_list_second)
{
list<term> poly_list_result;
list<term>::iterator iter_first=poly_list_first.begin();
list<term>::iterator iter_second=poly_list_second.begin();
while((iter_first!=poly_list_first.end())&&(iter_second!=poly_list_second.end()))
{
term t_tmp;
term t_first=(term)*iter_first;
term t_second=(term)*iter_second;
if(t_first.exp>t_second.exp)
{
poly_list_result.push_back(t_first);
iter_first++;
}
else if(t_second.exp>t_first.exp)
{
poly_list_result.push_back(t_second);
iter_second++;
}
else
{
t_tmp.coef=t_first.coef+t_second.coef;
if(t_tmp.coef!=0)
{
t_tmp.exp=t_first.exp;
poly_list_result.push_back(t_tmp);
}
iter_first++;
iter_second++;
}
}
for(;iter_first!=poly_list_first.end();iter_first++)
poly_list_result.push_back(*iter_first);
for(;iter_second!=poly_list_second.end();iter_second++)
poly_list_result.push_back(*iter_second);
return poly_list_result;
}
void PolyArith::Poly_input()
{
//输入函数,用于输入多项式
int n;
cout<<"请输入第一个多项式的项数:";
cin>>n;
cout<<"按降幂输入第一个多项式的每一项的系数和指数:"<<endl;
for(int i=1;i<=n;i++)
{
term t_tmp;
cout<<"请输入第"<<i<<"项系数和指数;"<<endl;
cin>>t_tmp.coef;
cin>>t_tmp.exp;
m_poly_list_first.push_back(t_tmp);
}
n=0;
cout<<"请输入第二个多项式的项数:";
cin>>n;
cout<<"按降幂输入第二个多项式的每一项的系数和指数:"<<endl;
for(int j=1;j<=n;j++)
{
term t_tmp;
cout<<"请输入第"<<j<<"项系数和指数;"<<endl;
cin>>t_tmp.coef;
cin>>t_tmp.exp;
m_poly_list_second.push_back(t_tmp);
}
}
void PolyArith::Poly_output()
{
list<term>::iterator iter=m_poly_list_first.begin();
cout<<"第一个多项式是:"<<endl;
for(;iter!=m_poly_list_first.end();)
{
term t_tmp=*iter;
cout<<t_tmp.coef<<"x^"<<t_tmp.exp;
if(++iter!=m_poly_list_first.end())
cout<<"+";
}
cout<<endl;
iter=m_poly_list_second.begin();
cout<<"第二个多项式是:"<<endl;
for(;iter!=m_poly_list_second.end();)
{
term t_tmp=*iter;
cout<<t_tmp.coef<<"x^"<<t_tmp.exp;
if(++iter!=m_poly_list_second.end())
cout<<"+";
}
cout<<endl;
iter=m_poly_list_result.begin();
cout<<"结果是:"<<endl;
for(;iter!=m_poly_list_result.end();)
{
term t_tmp=*iter;
cout<<t_tmp.coef<<"x^"<<t_tmp.exp;
if(++iter!=m_poly_list_result.end())
cout<<"+";
}
cout<<endl;
}
void PolyArith::Poly_add()
{
list<term>::iterator iter_first=m_poly_list_first.begin();
list<term>::iterator iter_second=m_poly_list_second.begin();
while((iter_first!=m_poly_list_first.end())&&(iter_second!=m_poly_list_second.end()))
{
term t_tmp;
term t_first=(term)*iter_first;
term t_second=(term)*iter_second;
if(t_first.exp>t_second.exp)
{
m_poly_list_result.push_back(t_first);
iter_first++;
}
else if(t_second.exp>t_first.exp)
{
m_poly_list_result.push_back(t_second);
iter_second++;
}
else
{
t_tmp.coef=t_first.coef+t_second.coef;
if(t_tmp.coef!=0)
{
t_tmp.exp=t_first.exp;
m_poly_list_result.push_back(t_tmp);
}
iter_first++;
iter_second++;
}
}
for(;iter_first!=m_poly_list_first.end();iter_first++)
m_poly_list_result.push_back(*iter_first);
for(;iter_second!=m_poly_list_second.end();iter_second++)
m_poly_list_result.push_back(*iter_second);
}
void PolyArith::Poly_multi()
{
list<term> poly_list_result;
list<term>::iterator iter_first=m_poly_list_first.begin();
for(;iter_first!=m_poly_list_first.end();iter_first++)
{
list<term> poly_list_tmp;
list<term>::iterator iter_second=m_poly_list_second.begin();
for(;iter_second!=m_poly_list_second.end();iter_second++)
{
term t_tmp;
term t_first=(term)*iter_first;
term t_second=(term)*iter_second;
t_tmp.coef=t_first.coef*t_second.coef;
t_tmp.exp=t_first.exp+t_second.exp;
poly_list_tmp.push_back(t_tmp);
}
poly_list_result=Poly_Add(poly_list_tmp,poly_list_result);
}
m_poly_list_result=poly_list_result;
}
PolyArith::~PolyArith()
{
}
相关文章推荐
- 多项式的加法和乘法算术运算的C++实现
- 我用c++写的一个多项式的处理器的核心部分和输出部分。实现多项式的加法,减法,乘法,除法,及其求余。
- 多项式乘法与加法运算(链表实现)
- C++实现多项式加法
- 高精度加法和乘法的c++实现
- PAT 3-04 一元多项式的乘法与加法运算(C语言实现)
- 基于c数据结构——实现多项式合并同类项,加法和乘法
- 实现多个多项式的加法、减法、乘法
- 多项式加法的c++实现
- c++实现链式存储结构实现一元多项式的加法运算
- 链表实现多项式加法和乘法(C语言实现)
- 用数组实现多项式加法和乘法
- c++程序入门(三)——用结构和类分别实现复数加法和乘法
- Java实现数组形式的多项式加法、减法、乘法、相除运算
- C++ 02-线性结构2 一元多项式的乘法与加法运算
- 数据结构课程设计:顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现
- 一元多项式加法与乘法运算链表实现
- 链表实现多项式的加法和乘法
- Java数据结构之多项式加法和乘法实现
- 链表实现多项式加法和乘法