新手的问题多多!!!try与catch怎么用?
#include <iostream>
#include <math.h>
class Quadratic //二次方程类
{
private:
float itsA;
float itsB;
float itsC;
public:
float GetA() const { return itsA; }
void SetA( float a ) { itsA=a; }
float GetB() const { return itsB; }
void SetB( float b ) { itsA=b; }
float GetC() const { return itsC; }
void SetC( float c ) { itsA=c; }
//=============================================
float Disc(); //Dist代表b*b-4*a*c
float Realpart(); //代表实部
float Imagepart(); //代表虚部
float Froot(); //有2根时的一个根
float Sroot(); //有2根时的另个根
bool Judge(); //itsA> =0?
};
#include "Quadratic.h "
using namespace std;
float Quadratic::Disc()
{
return (itsB*itsB-4*itsA*itsC);
}
//====================================
float Quadratic::Realpart()
{
return (-itsB/(2*itsA));
}
//====================================
float Quadratic::Imagepart()
{
return sqrt(-Disc())/(2*itsA);
}
//=====================================
float Quadratic::Froot()
{
return -itsB+sqrt(Disc())/(2*itsA);
}
//=====================================
float Quadratic::Sroot()
{
return -itsB-sqrt(Disc())/(2*itsA);
}
//=====================================
bool Quadratic::Judge()
{
return fabs(itsA)==0;
}
//**************************************
int main()
{
Quadratic Qq;
float disc;
disc=Qq.Disc();
float a;
float b;
float c;
cout < < "a is: " < < endl;
cin > > a;
cout < < endl;
cout < < "b is: " < < endl;
cin > > b;
cout < < endl;
cout < < "c is: " < < endl;
cin > > c;
cout < < endl;
try
{
if(Qq.Judge())
cout < < "is not a Quadratic\n ";
else
{
if(disc==0)
//if(disc <=1e-6)
cout < < "has tow equal roots:%8.4f\n " < < Qq.Realpart() < < endl;
else if(disc> 0)
{
cout < < "x1= " < < Qq.Froot() < < endl;
cout < < "x2= " < < Qq.Sroot() < < endl;
}
else
{
cout < < "has complex roots: \n ";
cout < < "%8.4f+%8.4fi\n " < < Qq.Realpart() < < Qq.Imagepart() < < endl;
cout < < "%8.4f-%8.4fi\n " < < Qq.Realpart() < < Qq.Imagepart() < < endl;
}
} throw Qq.Judge();
}
catch(Qq.Judge())
{ cout < < "Unable to process your inPut!!!!\n "; }
return 0;
}
--------------------Configuration: Quadratic - Win32 Debug--------------------
Compiling...
Quadratic.cpp
F:\学习\程序\2次方程\Quadratic.cpp(85) : error C2061: syntax error : identifier 'Qq '
F:\学习\程序\2次方程\Quadratic.cpp(85) : error C2310: catch handlers must specify one type
F:\学习\程序\2次方程\Quadratic.cpp(88) : error C2317: 'try ' block starting on line '62 ' has no catch handlers
Error executing cl.exe.
Quadratic.exe - 3 error(s), 0 warning(s)
将try与catch去除后运行出异常,是不是return多多了???
[解决办法]
新手?那就别用try...catch了,异常安全的代码不是那么好写的。