结构化编程方法:
//for two roots
#include
#include
int main()
{
double a,b,c,rp,ip;//方程系数
double x1,x2;//方程的根
double d;//根的判别式
cout<<"input a,b,c(方程系数):";
cin>>a>>b>>c;
if(a==0)
cout<<"这不是二元一次方程";
else
{
d = b * b - 4 * a * c;
if(d >= 0)
{
if (d==0)
{
x1 = -b / (2*a);
cout<<"只有一个实根:"<
else
{
x1 = ( -b + sqrt ( d ) ) / ( 2 * a );
x2 = ( -b - sqrt ( d ) ) / ( 2 * a );
cout<<"有二个实根:"<
}
else
{rp = -d/(2*a);
ip = sqrt ( -d ) /(2*a);
x1 = rp + ip ;
x2 = rp - ip ;
cout<<"有二个虚根:"<
}
}
return 0;
}
简单的类对象:
#include"iostream.h"
#include"math.h"
class FindRoot
{
private:
float a,b,c,d;
double x1,x2;
public:
FindRoot(float x,float y,float z);
void Find();
void Display();
};
FindRoot::FindRoot(float x,float y,float z)
{
a=x;
b=y;
c=z;
d=b*b-4*a*c;
}
void FindRoot::Find()
{
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(a*a);
}
else if(d==0)
{
x1=x2=(-b)/(2*a);
}
else
{
double rp = -d/(2*a);
double ip = sqrt ( -d ) /(2*a);
x1=rp + ip;
x2=rp - ip;
}
}
void FindRoot::Display()
{
if(d>0)
{
cout<<"x1="<
else if(d==0)
{
cout<<"x1=x2="<
else
{
cout<<"x1="<
}
void main()
{
FindRoot obj(1,2,3);
obj.Find();
obj.Display();
}
我简单改了一小下,很多都是粗心的错误。你运行一下,应该好用了。
#include
#include "math.h"
using namespace std;
class FindRoot
{
private:
float a,b,c,d;
double x1,x2;
public :
FindRoot(float x,float y,float z);
void Find();
void Display();
};
FindRoot::FindRoot(float x,float y,float z)
{
a=x;
b=y;
c=z;
d=b*b-4*a*c;
}
void FindRoot::Find()
{
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(a*a);
return;
}
else if(d==0)
{
x1=x2=(-b)/(2*a);
return;
}
else
{
x1=(-b)/(2*a);
x2=sqrt(-d)/(2*a);
}
}
void FindRoot::Display()
{
if(d>0)
{
cout<<"x1="<
}
else if(d==0)
{
cout<<"x1=x2="<
}
else
{
cout<<"x1="<
}
int main()
{
float a,b,c;
cout<<"这是一个求方程ax2+bx+c=0的根的程序。"<
{
cout<<"输入方程系数a:";
cin>>a;
if(a==0)
{
getchar();
return 0;
}
cout<<"输入方程系数b:";
cin>>b;
cout<<"输入方程系数c:";
cin>>c;
FindRoot sbj(a,b,c);
sbj.Find();
sbj.Display();
}
}
语法上的错误我就不说了 重要的是你定义的类的结构 和具体实现都有缺陷 数据成员的初始化用构造函数就可以了 建议你以后写程序把类的声明和实现分开 形成一个良好的风格
3个错误 :
1.要用getchar(),就要#include "stdio.h"
2.class FindRoot 里面的public后少了冒号
3.倒数第4行 obj.find(); 应该是sbj.find();
已在VC下测试通过