sales.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // sales.cpp -- Sales implementation
  2. #include "sales.h"
  3. using std::string;
  4. Sales::bad_index::bad_index(int ix, const string & s )
  5. : std::logic_error(s), bi(ix)
  6. {
  7. }
  8. Sales::Sales(int yy)
  9. {
  10. year = yy;
  11. for (int i = 0; i < MONTHS; ++i)
  12. gross[i] = 0;
  13. }
  14. Sales::Sales(int yy, const double * gr, int n)
  15. {
  16. year = yy;
  17. int lim = (n < MONTHS)? n : MONTHS;
  18. int i;
  19. for (i = 0; i < lim; ++i)
  20. gross[i] = gr[i];
  21. // for i > n and i < MONTHS
  22. for ( ; i < MONTHS; ++i)
  23. gross[i] = 0;
  24. }
  25. double Sales::operator[](int i) const
  26. {
  27. if(i < 0 || i >= MONTHS)
  28. throw bad_index(i);
  29. return gross[i];
  30. }
  31. double & Sales::operator[](int i)
  32. {
  33. if(i < 0 || i >= MONTHS)
  34. throw bad_index(i);
  35. return gross[i];
  36. }
  37. LabeledSales::nbad_index::nbad_index(const string & lb, int ix,
  38. const string & s ) : Sales::bad_index(ix, s)
  39. {
  40. lbl = lb;
  41. }
  42. LabeledSales::LabeledSales(const string & lb, int yy)
  43. : Sales(yy)
  44. {
  45. label = lb;
  46. }
  47. LabeledSales::LabeledSales(const string & lb, int yy, const double * gr, int n)
  48. : Sales(yy, gr, n)
  49. {
  50. label = lb;
  51. }
  52. double LabeledSales::operator[](int i) const
  53. { if(i < 0 || i >= MONTHS)
  54. throw nbad_index(Label(), i);
  55. return Sales::operator[](i);
  56. }
  57. double & LabeledSales::operator[](int i)
  58. {
  59. if(i < 0 || i >= MONTHS)
  60. throw nbad_index(Label(), i);
  61. return Sales::operator[](i);
  62. }