当前位置:首页 > C primer plus(第6版)中文版编程练习答案第15章
name = \}
inline void bad_hmean::mesg() { cout << name << \ << \}
class bad_gmean :public bad_hmean {
private: string name; public: explicit bad_gmean(double a = 0, double b = 0, const string &s = \ void mesg(); virtual ~bad_gmean()throw(){} };
bad_gmean::bad_gmean(double a, double b, const string &s) :bad_hmean(a, b, s) { name = \}
inline void bad_gmean::mesg() { cout << name << \be >= 0\\n\}
#endif //error.cpp
#include \
double hmean(double a, double b); double gmean(double a, double b);
int main() { double x, y, z; cout << \ while (cin >> x >> y)
{ try{ z = hmean(x, y); cout << \ << \ cout << \ << \ cout << \ } catch (bad_gmean &hg) { cout << hg.what(); cout << \ hg.mesg(); cout << endl; cout << \ break; } catch (bad_hmean &bg) { cout << bg.what(); cout << \ bg.mesg(); cout << endl; cout << \ continue; } } cout << \ system(\ return 0; }
double hmean(double a, double b) { if (a == -b) throw bad_hmean(); return 2.0*a*b / (a + b); }
double gmean(double a, double b) { if (a < 0 || b < 0) throw bad_gmean();
return sqrt(a*b); } 4、
//sales.h
#ifndef SALES_H_ #define SALES_H_ #include
class Sales {
public: enum { MONTHS = 12 }; class bad_index:public logic_error { private: int bi; public: explicit bad_index(int ix, const string &s = \ int bi_val()const { return bi; } virtual ~bad_index()throw(){} }; explicit Sales(int yy = 0); Sales(int yy, const double *gr, int n); virtual ~Sales(){} int Year()const { return year; } virtual double operator[](int i)const; virtual double &operator[](int i); private: double gross[MONTHS]; int year; };
class LabeledSales :public Sales {
public: class nbad_index :public Sales::bad_index { private:
std::string lbl; public: nbad_index(const string &lb, int ix, const string &s = \ const string &label_val()const { return lbl; } virtual ~nbad_index()throw(){} }; explicit LabeledSales(const string &lb = \ LabeledSales(const string &lb, int yy, const double *gr, int n); virtual ~LabeledSales(){} const string &Label()const { return label; } virtual double operator[](int i)const; virtual double &operator[](int i); private: string label; };
#endif //sales.cpp
#include \
Sales::bad_index::bad_index(int ix, const string &s) :logic_error(s), bi(ix) { }
Sales::Sales(int yy) { year = yy; for (int i = 0; i < MONTHS; ++i) gross[i] = 0; }
Sales::Sales(int yy, const double *gr, int n) { year = yy; int lim = (n < MONTHS) ? n : MONTHS; int i; for (i = 0; i < lim; ++i) gross[i] = gr[i]; for (; i < MONTHS; ++i) gross[i] = 0; }
double Sales::operator[](int i)const
共分享92篇相关文档