p13_2.cpp

来自「相当丰富的C++源码」· C++ 代码 · 共 61 行

CPP
61
字号
/****************************************************
* 程序名:p13_2.cpp                                *
* 功能: 带异常处理嵌套的求二元一次方程的解        *
****************************************************/
# include <cmath>
# include <iostream>
using namespace std;
struct Res {
	float x1,x2;
};
Res resolution(int a,int b,int c) throw(int);
void main() {
	int a,b,c;
	Res r; 
	cout<<"Input a, b,c :";
	cin>>a>>b>>c;
	try  //异常侦测区
	{
	    r=resolution(a,b,c);
		cout<<"x1="<<r.x1<<"\tx2="<<r.x2<<endl;
	}
	catch (int)
	{
		cerr<<"Sqrt Negative Exception"<<endl;
	}
	catch(...)
	{
	    cerr<<"unexpected or rethrow exception!"<<endl;
	}
}
float quotient(int a,int b) throw(char *)
{ 
   if (b==0)        //捕获异常
	   throw("Divide 0 !");
   else
	   return a/(float)b; 
}
Res resolution(int a,int b,int c)
{
   Res tmpr;
   try
   {
     if(a==0&&b!=0)
	 {
		 tmpr.x1=tmpr.x2=quotient(c,b);
		 return tmpr;
	 }
     if(b*b-4*a*c<0)
	     throw (b);
	 tmpr.x1=quotient(-b+sqrt(b*b-4.0*a*c),2*a);
     tmpr.x2=quotient(-b-sqrt(b*b-4.0*a*c),2*a);
     return tmpr;
   }
   catch(char *ErrS)
   {
		cerr<<ErrS<<endl;
	    //exit(0);
	    //throw;   
}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?