博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++primer 8.2.2节练习
阅读量:4878 次
发布时间:2019-06-11

本文共 6101 字,大约阅读时间需要 20 分钟。

练习8.7

1 #include 
2 #include
3 #include "factmain.h" 4 #include
5 using namespace std; 6 7 struct Sales_data { 8 friend ostream &print(ostream &os, const Sales_data &item); 9 friend istream &read(istream &is, Sales_data &item);10 private:11 string bookNo;12 unsigned units_sold;13 double price;14 double revenue;15 double avg_price() const;16 public:17 Sales_data(const string &s, const unsigned &u, const double &p) : bookNo(s), units_sold(u), price(p) { cout << "one" << endl; }18 Sales_data() : Sales_data("12345", 3, 12) { cout << "使用的是委托构造函数构造默认构造函数" << endl; }19 Sales_data(string s) : Sales_data(s, 2, 4) { cout << "仅仅输入一个字符串" << endl; }20 //Sales_data(const string &s, const unsigned &u) : bookNo(s), units_sold(u) {}21 Sales_data(istream &is) : Sales_data() { read(is, *this); cout << "最后一种" << endl; }22 string isbn() const { return bookNo; }23 unsigned &rUnit() { return units_sold; }24 double &rPrice() { return price; }25 double &rRevenue() { return revenue; }26 Sales_data &combine(const Sales_data&);27 28 };29 30 Sales_data add(const Sales_data &lhs, const Sales_data &rhs);31 ostream &print(ostream &os, const Sales_data &item);32 istream &read(istream &is, Sales_data &item);33 34 35 int main() //main函数的部分需要改变36 {37 ifstream in("sales_data.txt");38 ofstream out("shuchu.txt");39 //改动地方,新增一个Sales_data.txt 40 Sales_data total;41 if (read(in, total)) {42 //read(cin,total); 变为read(in,total); 43 Sales_data trans;44 while (read(in, trans)) {45 //read(cin, total); 变为read(in,total); 46 if (total.isbn() == trans.isbn())47 total.combine(trans);48 else49 {50 print(out, total) << endl;51 total = trans;52 }53 }54 print(out, total) << endl;55 }56 else {57 cerr << "No data?!" << endl;58 }59 system("pause");60 return 0;61 }62 63 Sales_data add(const Sales_data & lhs, const Sales_data & rhs) //非成员函数add64 {65 Sales_data sum = lhs;66 sum.combine(rhs);67 return sum;68 // TODO: 在此处插入 return 语句69 }70 71 istream & read(istream & is, Sales_data & item)72 {73 is >> item.bookNo >> item.units_sold >> item.price;74 item.revenue = item.units_sold * item.price;75 return is;76 // TODO: 在此处插入 return 语句77 }78 79 ostream & print(ostream & os, const Sales_data & item)80 {81 os << item.bookNo << " " << item.units_sold << " " << item.price << " " << item.revenue;82 return os;83 // TODO: 在此处插入 return 语句84 }85 86 Sales_data & Sales_data::combine(const Sales_data &rhs)87 {88 units_sold += rhs.units_sold;89 revenue += rhs.revenue;90 return *this;91 }92 93 inline double Sales_data::avg_price() const94 {95 return units_sold ? revenue/units_sold : 0;96 }

练习8.8

1 #include 
2 #include
3 #include "factmain.h" 4 #include
5 using namespace std; 6 7 struct Sales_data { 8 friend ostream &print(ostream &os, const Sales_data &item); 9 friend istream &read(istream &is, Sales_data &item);10 private:11 string bookNo;12 unsigned units_sold;13 double price;14 double revenue;15 double avg_price() const;16 public:17 Sales_data(const string &s, const unsigned &u, const double &p) : bookNo(s), units_sold(u), price(p) { cout << "one" << endl; }18 Sales_data() : Sales_data("12345", 3, 12) { cout << "使用的是委托构造函数构造默认构造函数" << endl; }19 Sales_data(string s) : Sales_data(s, 2, 4) { cout << "仅仅输入一个字符串" << endl; }20 //Sales_data(const string &s, const unsigned &u) : bookNo(s), units_sold(u) {}21 Sales_data(istream &is) : Sales_data() { read(is, *this); cout << "最后一种" << endl; }22 string isbn() const { return bookNo; }23 unsigned &rUnit() { return units_sold; }24 double &rPrice() { return price; }25 double &rRevenue() { return revenue; }26 Sales_data &combine(const Sales_data&);27 28 };29 30 Sales_data add(const Sales_data &lhs, const Sales_data &rhs);31 ostream &print(ostream &os, const Sales_data &item);32 istream &read(istream &is, Sales_data &item);33 34 35 int main() //main函数的部分需要改变36 {37 ifstream in("sales_data.txt");38 ofstream out("shuchu.txt",ofstream::app);39 //改动地方,新增一个Sales_data.txt 40 Sales_data total;41 if (read(in, total)) {42 //read(cin,total); 变为read(in,total); 43 Sales_data trans;44 while (read(in, trans)) {45 //read(cin, total); 变为read(in,total); 46 if (total.isbn() == trans.isbn())47 total.combine(trans);48 else49 {50 print(out, total) << endl;51 total = trans;52 }53 }54 print(out, total) << endl;55 }56 else {57 cerr << "No data?!" << endl;58 }59 system("pause");60 return 0;61 }62 63 Sales_data add(const Sales_data & lhs, const Sales_data & rhs) //非成员函数add64 {65 Sales_data sum = lhs;66 sum.combine(rhs);67 return sum;68 // TODO: 在此处插入 return 语句69 }70 71 istream & read(istream & is, Sales_data & item)72 {73 is >> item.bookNo >> item.units_sold >> item.price;74 item.revenue = item.units_sold * item.price;75 return is;76 // TODO: 在此处插入 return 语句77 }78 79 ostream & print(ostream & os, const Sales_data & item)80 {81 os << item.bookNo << " " << item.units_sold << " " << item.price << " " << item.revenue;82 return os;83 // TODO: 在此处插入 return 语句84 }85 86 Sales_data & Sales_data::combine(const Sales_data &rhs)87 {88 units_sold += rhs.units_sold;89 revenue += rhs.revenue;90 return *this;91 }92 93 inline double Sales_data::avg_price() const94 {95 return units_sold ? revenue/units_sold : 0;96 }

 

转载于:https://www.cnblogs.com/wuyinfenghappy/p/7324716.html

你可能感兴趣的文章
PyChram中同目录下import引包报错的解决办法?
查看>>
HNOI200——营业额统计(splay/treap)
查看>>
python练习题1-一元二次方程解
查看>>
小程序获取网络类型代码
查看>>
HTTP协议概述
查看>>
[zz]AVL树
查看>>
CF1143F/1142C U2
查看>>
mysql安装
查看>>
树莓派静态IP配置
查看>>
ASHX 控制类的HttpContext.Response 输出不完整的问题
查看>>
Visual Studio 2017中"const char *" 类型的值不能用于初始化 "char *" 类型的实体
查看>>
实时Web与WebSocket实践
查看>>
Equals()和GetHashCode()方法深入了解
查看>>
实验9(1)程序填空:下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依据。...
查看>>
Adobe Flex迷你教程 — ActionScript实现二维向量运算
查看>>
物联网架构成长之路(10)-Nginx负载均衡
查看>>
equals()重写
查看>>
python matplotlib 简单生成图
查看>>
[导入]终于搞定笔记本的待机
查看>>
maven 配置问题
查看>>