}
多项式类定义如下:
classpolynomial
{
public:
polynomial();
voidassign_coef(doublecoefficient,unsignedint
exponent);
voidadd_to_coef(doubleamount,unsignedintexponent);
voidclear();
doublecoefficient(unsignedintexponent)const{returncoef
[exponent];}
unsignedintdegree()const{returncurrent_degree;}
polynomialderivative()const;
polynomialadd(constpolynomial&p)const;
polynomialsub(constpolynomial&p)const;
polynomialmul(constpolynomial&p)const;
doubleeval(doublex)const;
voidview_coef()const;
private:
doublecoef[30];
unsignedintcurrent_degree;
};
参考程序运行结果:
test.exe
源程序
//头文件
#include
#include
usingnamespacestd;
//多项式类定义如下:
classpolynomial
{
public:
polynomial();
voidassign_coef(doublecoefficient,unsignedintexponent);
voidadd_to_coef(doubleamount,unsignedintexponent);
voidclear();
doublecoefficient(unsignedintexponent)const{returncoef[exponent];}
unsignedintdegree()const{returncurrent_degree;}
polynomialderivative();
polynomialadd(polynomial&p);
polynomialsub(polynomial&p);
polynomialmul(polynomial&p);
doubleeval(doublex);
voidview_coef()const;
private:
doublecoef[30];
unsignedintcurrent_degree;
};
//类中成员函数定义如下:
//1.构造函数========================================================================
polynomial:
:
polynomial()
{
inti;
for(i=0;i<30;i++)
{
coef[i]=0;
}
current_degree=0;
}
//2.系数指数存储====================================================================
voidpolynomial:
:
assign_coef(doublecoefficient,unsignedintexponent)
{
coef[exponent]=coefficient;
}
//3.清空多项式系数=====================================================================
voidpolynomial:
:
clear()
{
inti;
for(i=0;i<30;i++)
{
coef[i]=0;
}
}
//4.求导==============================================================================
polynomialpolynomial:
:
derivative()
{
inti,j;
polynomialb;
for(i=0,j=1;i<29;i++,j++)
{
b.coef[i]=coef[j]*(j);
}
returnb;
}
//5.求和==============================================================================
polynomialpolynomial:
:
add(polynomial&p)
{
polynomialtext;
inti;
for(i=0;i<30;i++)
{
text.coef[i]=coef[i]+p.coef[i];
}
returntext;
}
//6.相减==============================================================================
polynomialpolynomial:
:
sub(polynomial&p)
{
polynomialtext;
inti;
for(i=0;i<30;i++)
{
text.coef[i]=coef[i]-p.coef[i];
}
returntext;
}
//7.相乘==============================================================================
polynomialpolynomial:
:
mul(polynomial&p)
{
inti,j;
polynomialtext;
for(i=0;i<30;i++)
{
for(j=0;j<=i;j++)
{
text.coef[i]=coef[j]*(p.coef[i-j])+text.coef[i];
}
}
returntext;
}
//8.计算多项式的值====================================================================
doublepolynomial:
:
eval(doublex)
{
doublea=0;
inti;
for(i=0;i<30;i++)
{
a=a+coef[i]*pow(x,i);
}
returna;
}
//9.显示多项式========================================================================
voidpolynomial:
:
view_coef()const
{
inti=0;
while(coef[i]==0&&i<30)
{
i++;
}
if(i==30)cout<<""<elsecout<i++;
for(;i<30;i++)
{
if(coef[i]!
=0)
{
if(coef[i]<0)cout<elsecout<<"+"<}
}
cout<}
//各自定义函数的声明:
voidprint_menu();//输出菜单
charget_command();//选择字符
intset_current();//得到所选的值
voidtest_assign(polynomial&test);//得到系数和指数并显示多项式
voidtest_add(polynomial&test);//将两个多项式相加
voidtest_clear(polynomial&test);//清空一个多项式
voidview(constpolynomial&test);//输出多项式
voidview_all(constpolynomialp[]);//输出多项式组
voidtest_eval(polynomial&test);//给x赋值并计算出多项式的结果
//主函数如下:
voidmain()
{
polynomialp[3];
intcurrent_index=0;
charcommand;
do{
print_menu();
command=get_command();
switch(command)
{
case's':
current_index=set_current();
break;
case'l':
test_assign(p[current_index]);
break;
case't':
test_add(p[current_index]);
break;
case'c':
test_clear(p[current_index]);
break;
case'v':
cout<";
view(p[current_index]);
break;
case'a':
view_all(p);
break;
case'd':
cout<";
view(p[current_index].derivative());
break;
case'e':
test_eval(p[current_index]);
break;
case'+':
view(p[0].add(p[1]));
break;
case'-':
view(p[0].sub(p[1]));
break;
case'*':
view(p[0].mul(p[1]));
break;
case'q':
break;
default:
cout<<"Invalidcommand."<}
}while(command!
='q');
}
//各自定义函数定义如下:
//1.函数功能:
输出菜单========================================================
voidprint_menu(){
cout<<"---------------TheCommands---------------"<cout<<"s-设置当前多项式"<cout<<"l-调用assign_coef函数"<cout<<"t-调用add_to_coef函数"<cout<<"c-调用clear函数"<cout<<"v-显示当前多项式"<cout<<"a-显示所有多项式"<cout<<"d-对当前多项式求导并显示"<cout<<"e-计算当前多项式的值"<cout<<"+-显示A+B的和"<cout<<"--显示A-B的差"<cout<<"*-显示A*B的积"<cout<<"q-quit"<cout<<"------------------------------------------"<}
//2.函数功能:
选择字符============================================================
charget_command()
{
charcommand;
cout<<">";
cin>>command;
return(command);
}
//3.函数功能:
得到所选的值==========================================================
intset_current()
{
charcommand;
do{
cout<<"Enterthepolynomialyouwanttoworkon:
(a,b,c)";
command=get_command();
}while((command<'a')||(command>=char('a'+3)));
returncommand-'a';
}
//4.函数功能:
得到系数和指数并显示多项式=============================================
voidtest_assign(polynomial&test)
{
doublecoefficient;
unsignedintexponent;
cout<<"Enterexponent:
";
cin>>exponent;
cout<<"Entercoefficient:
";
cin>>coefficient;
test.assign_coef(coefficient,exponent);
cout<<"设置之后:
";
test.view_coef();
}
//5.函数功能:
增加某个项的系数==========================================================
voidtest_add(polynomial&test)
{
polynomiala;
inti;
doublecoefficient;
unsignedintexponent;
cout<<"Enterexponent:
";
cin>>exponent;
cout<<"Entercoefficient:
";
cin>>coefficient;
a.assign_coef(coefficient,exponent);
doubleb[30];
for(i=0;i<30;i++)
{
b[i]=test.coefficient(i)+a.coefficient(i);
test.assign_coef(b[i],i);
}
cout<<"累加之后:
";
test.view_coef();
cout<}
//6.函数功能:
清空一个多项式=============================================================
voidtest_clear(polynomial&test)
{
test.clear();
cout<<"清空之后:
";
cout<}
//7.函数功能:
输出多项式=================================================================
voidview(constpolynomial&test)
{
test.view_coef();
}
//8.函数功能:
输出多项式组===============================================================
voidview_all(constpolynomialp[])
{
inti;
charm;
for(i=0;i<3;i++)
{
m='a'+i;
cout<<"式子"<";
p[i].view_coef();
cout<}
}
//9.函数功能:
给x赋值并计算出多项式的结果================================================
voidtest_eval(polynomial&test)
{
doublex;
doublea;
cout<<"请输入x的值";
cin>>x;
a=test.eval(x);
cout<<"计算出多项式的值为:
"<}
注意:
由于exe文件没法上传,所以作者并没有上传这个exe文件。