C++primer第五版的Sales_data程序(版本V1.0)

#include<iostream>
#include<string>
#include<Windows.h>
using namespace std;
struct Sales_data {
	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;//将rhs的成员加到this对象的成员上
		revenue += rhs.revenue;
		return *this;
	}
	string Sales_data::isbn() const { return bookNo; }
	string bookNo;
	unsigned units_sold = 0;
	double revenue = 0.0;
};
istream &read(istream &div, Sales_data& a)
{
	double price = 0;
	div >> a.bookNo >> a.units_sold >> price;
	a.revenue = price*a.units_sold;
	return div;
}
ostream &print(ostream &div, Sales_data& a)
{
	div << a.bookNo << " " << a.units_sold << " " << a.revenue << " " << a.avg_price();
	return div;
}
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);
				cout << endl;
				total = trans;
			}
		}
		print(cout, total);
		cout << endl;
	}
	else
		cerr << "No data?" << endl;

	system("pause");
	return 0;
}


猜你喜欢

转载自blog.csdn.net/qq_42426141/article/details/81000382