C++primer 7.1.4节练习

练习7.11、练习7.13、练习7.14

 1 #include <iostream>
 2 #include <string>
 3 #include "factmain.h"
 4 using namespace std;
 5 
 6 struct Sales_data {
 7     string  isbn() const { return bookNo; }
 8     Sales_data &combine(const Sales_data&);
 9     string bookNo;
10     unsigned units_sold;
11     double price = 0.0;
12     double revenue = 0.0;
13     Sales_data() = default;
14     Sales_data(const string &s, const unsigned &u, const double &p) : bookNo(s), units_sold(u), price(p) {};
15     Sales_data(const string &s, const unsigned &u) : bookNo(s), units_sold(u) {};
16     Sales_data(istream &is);
17 };
18 
19 Sales_data add(const Sales_data &lhs, const Sales_data &rhs);
20 ostream &print(ostream &os, const Sales_data &item);
21 istream &read(istream &is, Sales_data &item);
22 
23 
24 int main()
25 {
26     Sales_data test1("hello",56);
27     print(cout, test1);
28     Sales_data item1(cin);
29     Sales_data item2;
30     double totalRevenue = 0;
31     double totalSold = 0;
32     int counter = 1;
33     if ((item1.bookNo).empty())
34     {
35         item1.revenue = item1.price * item1.units_sold;
36         while (read(cin,item2)) {
37             item2.revenue = item2.price * item2.units_sold;
38             if (item1.bookNo == item2.bookNo) {
39                 item1.combine(item2);
40                 ++counter;
41             }
42             else {
43                 print(cout, item1) << endl;
44                 item1.bookNo = item2.bookNo;
45                 item1.units_sold = item2.units_sold;
46                 item1.revenue = item2.revenue;
47                 counter = 1;
48             }
49         }
50         print(cout, item2) << endl;
51     }
52     system("pause");
53     return 0;
54 }
55 
56 Sales_data add(const Sales_data & lhs, const Sales_data & rhs) //非成员函数add
57 {
58     Sales_data sum = lhs;
59     sum.combine(rhs);
60     return sum;
61     // TODO: 在此处插入 return 语句
62 }
63 
64 istream & read(istream & is, Sales_data & item)
65 {
66     is >> item.bookNo >> item.units_sold >> item.price;
67     item.revenue = item.units_sold * item.price;
68     return is;
69     // TODO: 在此处插入 return 语句
70 }
71 
72 ostream & print(ostream & os, const Sales_data & item)
73 {
74     os << item.bookNo << " " << item.units_sold << " " << item.price << " " << item.revenue;
75     return os;
76     // TODO: 在此处插入 return 语句
77 }
78 
79 Sales_data & Sales_data::combine(const Sales_data &rhs)
80 {
81     units_sold += rhs.units_sold;
82     revenue += rhs.revenue;
83     return *this;
84 }
85 
86 Sales_data::Sales_data(istream & is)
87 {
88     read(is, *this);
89 }

 

练习7.12

需要用到友元函数,待解决

练习7.15

见最后程序

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
c primer 15.9作业是关于异常处理的内容。在这一中,主要介绍了C语言中的错误处理机制和异常处理方式。 异常处理是一种程序设计中的重要思想,它允许应对出现的各种错误或异常情况,从而增加程序的健壮性和可靠性。C语言中的异常处理主要通过使用错误码和错误处理函数来实现。 在进行异常处理时,通常需要先定义一些错误码,用于标识可能出现的异常情况。C语言提供了一些标准的错误码,如errno.h头文件中定义的错误码,还可以根据需要自定义错误码。 接下来,我们需要在程序中合适的位置进行错误检测并进行异常处理。可以使用if语句或者switch语句等条件语句来检测错误码,并根据不同的错误码执行相应的错误处理代码。 错误处理代码的内容可以根据具体情况而定,它可以是打印错误信息、修复错误、返回错误码等操作。在处理完异常后,可以继续执行后续的程序逻辑,或者返回到调用处继续处理。 除了使用错误码和错误处理函数进行异常处理外,C语言还提供了一种特殊的异常处理方式,即信号处理。信号处理是通过捕捉和处理操作系统发送的信号来实现的,通过注册信号处理函数,可以在程序遇到特定信号时执行相应的处理代码。 总之,C语言中的异常处理是一种重要的错误处理机制,可以提高程序的可靠性和健壮性。通过定义错误码、错误处理函数和信号处理,可以有效地捕捉和处理各种异常情况。在编写C程序时,合理地使用异常处理机制是至关重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值