异常
/*编写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示*/
#include<iostream>
#include<cmath>
using namespace std;
double nsqrt(double &a)
{
double n;
if(a>=0)
n=sqrt(a);
else
throw a;
return n;
}
int main()
{
double n;
char ch='y';
try
{
while(ch=='y')
{
cin>>n;
cout<<nsqrt(n)<<endl;
cout<<"是否继续输入(y/n):";
cin>>ch;
cout<<endl;
}
}
catch(double)
{
cout<<"输入的数为负数,无法开平方根!"<<endl;
}
return 0;
}
/*
给出三角形的三边a,b,c,求三角形的面积。只有a+b>c,b+c>a,c+a>b时才能构成三角形。
方法1:设置异常处理,对不符合三角形条件的输出警告信息,不予计算。
方法2:用断言检测代码是否有误。
*/
#include<iostream>
#include<cmath>
using namespace std;
double area(double &a,double &b,double &c)
{
double _area;
if(a+b>c&&a+c>b&&b+c>a)
{
double s=(a+b+c)/2;
_area=sqrt(s*(s-a)*(s-b)*(s-c));
}
else
throw a;
return _area;
}
int main()
{
double a,b,c;
cin>>a>>b>>c;
try
{
while(a>0&&b>0&&c>0)
{
cout<<area(a,b,c)<<endl;
cout<<"是否需要继续输入(a=b=c=0):";
cin>>a>>b>>c;
cout<<endl;
}
}
catch(double)
{
cout<<"输入有误"<<endl;
}
return 0;
}