读书人

c++中一个编译显示有关问题新手求教

发布时间: 2013-03-17 13:48:31 作者: rapoo

c++中一个编译显示问题,新手求教!
这是一个解一元二次方程解的程序,写的很粗糙,基本能实现功能,就是在判断q<0时,它不能显示“次方程没有实根这句话”,请大家帮忙解决下




#include<iostream>
#include<cmath>

using namespace std;
class CQuadEq
{
public:
double Data(double a, double b, double c)
{
q=sqrt(b*b-4*a*c);
return q;
}
void FindRoot(double a, double b, double d){x1=(-b+d)/(2*a);x2=(-b-d)/(2*a);}
void Show(){cout<<"方程组的两个根为:"<<endl<<x1<<","<<x2<<endl;}
void Show1(){cout<<"此方程组没有实根"<<endl;}

private:
double q,x1,x2;
};
void main()
{
double a,b,c,q;
cout<<"请输入三个数:"<<endl;
cin>>a>>b>>c;
CQuadEq cq;
q=cq.Data(a,b,c);
if(q<0)
{
cout<<"此方程没有实根"<<endl;
}
if(q>=0)
{

cq.FindRoot(a,b,q);
cq.Show();

}

}
[解决办法]

b^2-4ac >= 0, 则有解。


class CQuadEq
{
public:
double Data(double a, double b, double c)
{
return q = b*b-4*a*c;
}
void FindRoot(double a, double b, double d)
{
double delta = sqrt(q);
x1=(-b+delta)/(2*a);
x2=(-b-delta)/(2*a);
}
void Show(){ cout<<"方程组的两个根为:"<<endl<< x1<<","<<x2<<endl;}
void Show1(){ cout<<"此方程组没有实根"<<endl; }

private:
double q,x1,x2;
};

[解决办法]
q=b*b-4*a*c;
不需要加sqrt()
你只是求q就得了,不是求q的平方根
[解决办法]
你直接对
b*b-4*a*c
进行判断,别开根号。
开了根号应该就默认是正了。

读书人网 >C++

热点推荐