1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | #include<cstring> #include<iostream> using namespace std;
struct Sales_data{ Sales_data() = default; Sales_data(const string &s) :bookNo(s) {} Sales_data(const string &s, unsigned n, double p):bookNo(s),units_sold(n),revenue(p*n) {} Sales_data(istream&);
string isbn() const{return bookNo;} Sales_data& combine(const Sales_data&); double avg_price() const;
string bookNo; unsigned units_sold = 0; double revenue = 0.0; };
double Sales_data::avg_price() const { if(units_sold) return revenue/units_sold; else return 0; }
Sales_data& Sales_data::combine(const Sales_data &rhs) { units_sold += rhs.units_sold; revenue += rhs.revenue; return *this; }
Sales_data add(const Sales_data& ,const Sales_data&); ostream &print(ostream& , const Sales_data&); istream &read(istream& , const Sales_data&);
istream &read(istream &is, Sales_data &item) { double price = 0.0; is>>item.bookNo>>item.units_sold>>price; } ostream &print(ostream &os, const Sales_data &item) { os<<item.isbn()<<" "<<item.units_sold<<" " <<item.revenue<<" "<<item.avg_price()<<endl; return os; }
Sales_data add(const Sales_data &lhs, const Sales_data &rhs) { Sales_data sum = lhs; sum.combine(rhs); return sum; }
Sales_data::Sales_data(istream &is) { read(is,*this); }
int main() { Sales_data total; string temp; temp = "shansan"; total.bookNo = temp; cout<<total.bookNo<<endl; cout<<total.isbn()<<endl;
Sales_data let("shansan.top",33,33); cout<<let.bookNo<<" "<<let.units_sold<<" "<<let.revenue<<endl;
Sales_data read_print; read(cin,read_print); print(cout,read_print);
Sales_data dada(cin); print(cout,dada);
return 0; }
|