64,648
社区成员
发帖
与我相关
我的任务
分享
/*************************************************************************
> File Name: test.7.1.cpp
> Author: puruidong
> Mail: 1@w1520.com
> Created Time: 2014年03月23日 星期日 22时39分49秒
************************************************************************/
#include<iostream>
using namespace std;
//Sales_data类改进版.
//需自己重写.
//此版本参照7.1.2示例.
struct Sales_data
{
//新成员,关于Sales_data对象的操作.
string isbn() const {return bookNo;}
Sales_data& combine(const Sales_data&);
double avg_price() const;
//下面的基本无变化.[与64页相比]
string bookNo;
unsigned units_sold=0;
double revenue = 0.0 ;
};
//Sales_data的非成员接口函数.
Sales_data add(const Sales_data&,const Sales_data&);
ostream &print(ostream&,const Sales_data&);
istream &read(istream&,Sales_data&);
/*************************************************************************
> File Name: 7.1.1.demo.cpp
> Author: puruidong
> Mail: 1@w1520.com
> Created Time: 2014年03月23日 星期日 22时28分09秒
************************************************************************/
#include<iostream>
#include"test.7.1.h"
using namespace std;
//改进的Sales_data类
int main()
{
Sales_data total;//保存当前求和结果的变量
if(read(cin,total))//读入第一笔交易
{
Sales_data trans;//保存下一条交易的数量.
while(read(cin,trans))//读入剩余的交易
{
if(total.isbn()==trans.isbn())//检查isbn
{
total.combine(trans);//更新变量total当前的值
}else
{
print(cout,total) << endl;//输出结果.
total = trans;//处理下一本书.
}
}
print(cout,total) << endl;//输出最后一条交易
}else
{//没有输入任何信息.
cerr << "No Data?" << endl;//通知用户.
}
return 0;
}