//main.cpp
#include<iostream>
#include"exch.h"
using namespace std;
double hmean(double x,double y)
{
if(x==-y)
throw bad_hmean();
else
return 2.0*x*y/(x+y);
};
double gmean(double x,double y)
{
if(x<0||y<0)
throw bad_gmean();
else
return sqrt(x*y);
};
void main()
{
double x,y,z;
cout<<"enter two numbers:";
while(cin>>x>>y)
{
try{
z =hmean(x,y);
cout<<"harmonic mean of"<<x<<"and"<<y<<"is"<<z<<endl;
cout<<"geometric mean of:"<<x<<"and"<<y<<"is"<<z<<endl;
cout<<"enter the next set of number <q to quit>:";
}
catch(bad_hmean &h)
{
cout<<h.what()<<endl;
}
catch(bad_gmean &g)
{
cout<<g.what()<<endl;
}
cin.get();
}
cout<<"bye"<<endl;
cin.get();
}
//exch.h
#include<stdexcept>
#include<iostream>
using namespace std;
class bad_hmean:public exception
{
public:
const char* what()
{
return" bad argument to heame(),不应该是相反数";
}
};
class bad_gmean:public exception
{
public:
const char*what()
{
return" gmean()argument should be>=0";
}
};
15.2
最新推荐文章于 2023-04-23 17:37:52 发布