您的位置:首页 > 其它

用“派生类”求一元二次方程的解

2014-05-06 14:52 176 查看
/*烟台大学计算机学院学生
*All right reserved.
*文件名称*烟台大学计算机学院学生
*All right reserved.
*文件名称:用“派生类”求一元二次方程的解
*作者:杨飞
*完成日期:2014年4月11日
*版本号:v1.0
*对任务及求解方法的描述部分:用“派生类”求一元二次方程的解
*我的程序:*/
#include <iostream>
#include <cmath>
using namespace std;
//方程基类
class CEquation
{
protected:
double a;
double b;
double c;
public:
CEquation(double aa=0,double bb=0,double cc=0):
a(aa),b(bb),c(cc){};
void setCEquation(double aa,double bb,double cc);
};
void CEquation::setCEquation(double aa,double bb,double cc)
{
a=aa;
b=bb;
c=cc;
}
class CEquation12:public CEquation
{
private:
char unkown;
public:
CEquation12(double aa=0,double bb=0,double cc=0):
CEquation(aa,bb,cc)
{
unkown='x';
};
void solve();
friend istream &operator>>(istream &input,CEquation12 &e);
friend ostream &operator<<(ostream &output,CEquation12&e);
};
istream &operator>>(istream &input,CEquation12 &e)
{
cout<<"请输入一元二次方程的三个系数(例如2 1 5)"<<endl;
input>>e.a>>e.b>>e.c;
return input;
}
ostream &operator<<(ostream &output,CEquation12&e)
{
cout<<e.a<<e.unkown<<"^2";
if(e.b>=0)
cout<<"+";
cout<<e.b<<e.unkown;
if(e.c>=0)
cout<<"+";
cout<<e.c<<"=0"<<endl;
return output;
}
void CEquation12::solve()
{
double delt,x;
if(a==0)
{
if(b==0)
{
if(c==0)
cout<<"方程的解为任意的实数!!!"<<endl;
else
cout<<"方程无解!!!"<<endl;
}
else
{
x=(-c)/b;
cout<<"方程的解"<<unkown<<"="<<x<<endl;
}
}
else
{
delt=b*b-4*a*c;
if(delt<0)
cout<<"方程无解!!!"<<endl;
if(delt==0)
{
cout<<"方程有两个相同的实数根"<<endl;
cout<<"x1=x2="<<(-b)/2*a;
}
if(delt>0)
{
cout<<"方程有两个不相同的实数根"<<endl;
cout<<"x1="<<((-b)+sqrt(delt))/2*a;
cout<<"x2="<<((-b)-sqrt(delt))/2*a;
}
}
}
int main()
{
CEquation12 e;
cin>>e;
cout<<"方程"<<e<<endl;
e.solve();
return 0;
}


运行结果:


心得体会:无
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: