<div>#include<string>
#include<iostream>
using namespace std;</div><div>
</div><div>struct Sales_data
{
string const &isbn() const{ return bookNo; };
Sales_data &combine(const Sales_data&);</div><div>
</div><div> string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};
Sales_data &Sales_data::combine(const Sales_data& rhs)
{
units_sold += rhs.units_sold;
revenue += rhs.revenue;
return *this;
}</div><div>
</div><div>istream &read(istream &is, Sales_data &item)//IO类属于不能被拷贝的类型,只能通过引用来传递它们。
{
double price = 0;
is >> item.bookNo >> item.units_sold >> price;
item.revenue = price*item.units_sold;
return is;
}</div><div>
</div><div>ostream &print(ostream &os, const Sales_data &item)
{
os << item.isbn() << " " << item.units_sold << " " << item.revenue;
return os;
}</div><div>
</div><div>Sales_data add(const Sales_data &lhs, const Sales_data &rhs)
{
Sales_data sum = lhs;
sum.combine(rhs);
return sum;
}</div>
#include<string>
#include<iostream>
#include"Sales_data.h"
using namespace std;
int main()
{
Sales_data total;
if (read(cin, total))
{
Sales_data trans;
while (read(cin, trans))
{
if (total.isbn() == trans.isbn())
total.combine(trans);
else
{
print(cout, total) << endl;
total = trans;
}
}
print(cout, total) << endl;
}
else
{
cerr << "No data?!" << endl;
return -1;
}
return 0;
}