C++Primer第五版第七章练习7.3

/*
struct Sales_data{
	string bookNo;
	unsigned units_sold=0;//销售数量
	double revenue =0.0;//销售收入
};
练习7.3:向上述Sales_data类添加combine和isbn成员。
struct Sales_data{
	string isbn() const { return bookNo; }
	Sales_data& combine(const Sales_data&);
	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;
}
*/
#include "TouWenJian_7.h"

int main()
{
	Sales_data total;
	double price_total;//单价
	if(cin>>total.bookNo>>total.units_sold>>price_total){
		total.revenue=total.units_sold*price_total;
		Sales_data trans;
		double price_trans;
		while(cin>>trans.bookNo>>trans.units_sold>>price_trans){
			trans.revenue=trans.units_sold*price_trans;
			if(total.isbn()==trans.isbn()){
				total.combine(trans);
			}
			else{
				cout<<total.isbn()<<"\t"<<total.units_sold<<"\t"
					<<total.revenue<<"\t\t"
					<<total.revenue/total.units_sold<<"\t"
					<<endl;
				total=trans;//参考答案里的写法
/*********自己写的**************************************
				total.bookNo=trans.bookNo;
				total.units_sold=trans.units_sold;
				total.revenue=trans.revenue;
***************************************************/
			}
		}
		cout<<total.isbn()<<"\t"<<total.units_sold<<"\t"
			<<total.revenue<<"\t\t"
			<<total.revenue/total.units_sold<<"\t"
			<<endl;
	} else{
		cerr << "No data?!" << endl;
        return -1; 
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值