C++ Primer(第四版) 课后习题1.24

原题:

编写程序,读入几笔不同的交易。对于每笔新读入的交易,要确定它的ISBN 是否和以前的交易的ISBN 一样,并且记下每一个ISBN 的交易的总数。

通过给定多笔不同的交易来测试程序。这些交易必须代表多个不同的ISBN,但是每个ISBN的记录应分在同一组。

修改:

要求可随意输入不同的ISBN交易信息,并将输入的所有交易分类别输出。(Sales_item.h 到官网下载)

 1 #include <iostream>
 2 #include <vector>
 3 #include "Sales_item.h"
 4 #include <algorithm>
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     cout<<"输入交易信息:"<<endl;
10     Sales_item book,firstbook;
11     vector<Sales_item> vctBooks;
12     bool flag = true; //vctBooks中是否需要push数据,true需要push
13     if (cin>>firstbook)
14     {
15          vctBooks.push_back(firstbook);
16         while (cin>>book)
17         {
18             vector<Sales_item>::iterator iter;            
19              for (iter = vctBooks.begin(); iter != vctBooks.end(); ++iter)
20             {    
21                 //如果有相同书目则相加,将flag设为false
22                 if (iter->same_isbn(book))
23                 {
24                     (*iter) += book;
25                     flag = false;
26                     break;
27                 }                
28             }
29             if(flag)
30             {
31                 vctBooks.push_back(book);                                
32             }
33             //将flag重置为ture
34             flag = true;
35         }
36     }
37     vector<Sales_item>::iterator iter;
38     for (iter = vctBooks.begin(); iter != vctBooks.end(); iter++)
39     {
40         cout<<*iter<<endl;
41     }
42     
43     return 0;
44 }
View Code

 结果:

原文地址:https://www.cnblogs.com/gis-flying/p/4171573.html