Sales_data.h

 1 #ifndef SALES_DATA_H
2 #define SALES_DATA_H
3
4 #include "Version_test.h"
5
6 #include <string>
7
8 struct Sales_data {
9 std::string bookNo;
10 #ifdef IN_CLASS_INITS
11 unsigned units_sold = 0;
12 double revenue = 0.0;
13 #else
14 unsigned units_sold;
15 double revenue;
16 #endif
17 };
18 #endif
  • 定义了Slaes_data类
  • 作者想让读者自己定义一遍Sales_item类,所以在此没有定义操作

Sales_data.cpp

 1 #include <iostream>
2 #include <string>
3 #include "Sales_data.h"
4
5 int main()
6 {
7 Sales_data data1, data2;
8
9 // code to read into data1 and data2
10 double price = 0; // price per book, used to calculate total revenue
11
12 // read the first transactions: ISBN, number of books sold, price per book
13 std::cin >> data1.bookNo >> data1.units_sold >> price;
14 // calculate total revenue from price and units_sold
15 data1.revenue = data1.units_sold * price;
16
17 // read the second transaction
18 std::cin >> data2.bookNo >> data2.units_sold >> price;
19 data2.revenue = data2.units_sold * price;
20
21 // code to check whether data1 and data2 have the same ISBN
22 // and if so print the sum of data1 and data2
23 if (data1.bookNo == data2.bookNo) {
24 unsigned totalCnt = data1.units_sold + data2.units_sold;
25 double totalRevenue = data1.revenue + data2.revenue;
26
27 // print: ISBN, total sold, total revenue, average price per book
28 std::cout << data1.bookNo << " " << totalCnt
29 << " " << totalRevenue << " ";
30 if (totalCnt != 0)
31 std::cout << totalRevenue/totalCnt << std::endl;
32 else
33 std::cout << "(no sales)" << std::endl;
34
35 return 0; // indicate success
36 } else { // transactions weren't for the same ISBN
37 std::cerr << "Data must refer to the same ISBN"
38 << std::endl;
39 return -1; // indicate failure
40 }
41 }
  • 读入data1和data2的代码
  • 检查data1和data2的ISBN是否相同
  • 如相同,求data1和data2的和

[笔记] 《c++ primer》书店程序 Chapter2的更多相关文章

  1. C++primer书店程序

    #include <iostream> #include <string> #include <cassert> #include <algorithm> ...

  2. [笔记] 《c++ primer》书店程序 Chapter 1

    书店程序是<c++ primer>中重要的实例,涉及大部分重要知识点,但代码分散阅读不便,下面按照章节顺序总结 Sales_item.h #ifndef SALESITEM_H // we ...

  3. Lua学习笔记4. coroutine协同程序和文件I/O、错误处理

    Lua学习笔记4. coroutine协同程序和文件I/O.错误处理 coroutine Lua 的协同程序coroutine和线程比较类似,有独立的堆栈.局部变量.独立的指针指令,同时又能共享全局变 ...

  4. 微信小程序开发:学习笔记[7]——理解小程序的宿主环境

    微信小程序开发:学习笔记[7]——理解小程序的宿主环境 渲染层与逻辑层 小程序的运行环境分成渲染层和逻辑层. 程序构造器

  5. Linux进程线程学习笔记:运行新程序

    Linux进程线程学习笔记:运行新程序                                         周银辉 在上一篇中我们说到,当启动一个新进程以后,新进程会复制父进程的大部份上下 ...

  6. 个人学习笔记:C语言程序结构

    个人笔记:C语言程序 函数 语句 输入输出对象 标识符 关键字 函数 一个C语言源程序,是由一个或多个函数定义顺序组成的,其中必须有一个函数名为main的主函数.C语言源程序中的函数是指完成特定数据处 ...

  7. [笔记] 《c++ primer》书店程序 Chapter7

    Sales_data.h 1 #ifndef SALES_DATA_H 2 #define SALES_DATA_H 3 4 #include "Version_test.h" 5 ...

  8. C++ Primer 学习笔记_88_用于大型程序的工具 --异常处理[续1]

    用于大型程序的工具 --异常处理[续1] 四.又一次抛出 有可能单个catch不能全然处理一个异常.在进行了一些校正行动之后,catch可能确定该异常必须由函数调用链中更上层的函数来处理,catch能 ...

  9. C++ Primer 学习笔记_95_用于大型程序的工具 --多重继承与虚继承

    用于大型程序的工具 --多重继承与虚继承 引言: 大多数应用程序使用单个基类的公用继承,可是,在某些情况下,单继承是不够用的,由于可能无法为问题域建模,或者会对模型带来不必要的复杂性. 在这些情况下, ...

随机推荐

  1. 全网最详细的Linux命令系列-touch命令

    linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件. 命令格式: touch [选项]... 文件... 命令参数: -a 或--tim ...

  2. 阅读《构建之法》之FAQ

    注:本文档已提交Github,地址是这个 欢迎大家通过PR的方式或者在本博客下留言的方式随时补充意见和建议,我们会持续更新 书中7.2.4的表7-1 MSF团队模型和关键质量目标里面提到的" ...

  3. 实战 Java 16 值类型 Record - 2. Record 的基本用法

    在上一篇文章实战 Java 16 值类型 Record - 1. Record 的默认方法使用以及基于预编译生成相关字节码的底层实现中,我们详细分析了 Record 自带的属性以及方法和底层字节码与实 ...

  4. Oracle中left join、right join、full join应用场景

    一.提出问题:三个表分别存不同属性,一条sql查询各个公司的不同的属性 (1) 提供的三个表,相同的维度[company] (2) 需要的结果: 二.问题解析:可通过先查出所有公司再左连接三个表,或者 ...

  5. zipfile tarfile模块

    zipfile --- 使用ZIP存档 这个模块提供了创建.读取.写入.添加及列出 ZIP 文件的工具 # 创建一个ZipFile对象, 可使用上下文管理 with class zipfile.Zip ...

  6. Mybatis(一)Porxy动态代理和sql解析替换

    JDK常用核心原理 概述 在 Mybatis 中,常用的作用就是讲数据库中的表的字段映射为对象的属性,在进入Mybatis之前,原生的 JDBC 有几个步骤:导入 JDBC 驱动包,通过 Driver ...

  7. PDF转HTML工具——用springboot包装pdf2htmlEX命令行工具

    Convert PDF to HTML without losing text or format. 用springboot把pdf2htmlEX命令行工具包装为web服务, 使得PDF转HTML更方 ...

  8. Ubuntu20.04安装MongoDB

    本教程描述了如何在Ubuntu20.04上安装MongoDB4.4 安装MongoDB Ubuntu 20.04默认存储库中不提供最新版本的MongoDB,因此需要在系统中添加官方的MongoDB存储 ...

  9. NumPy之:结构化数组详解

    目录 简介 结构化数组中的字段field 结构化数据类型 创建结构化数据类型 从元组创建 从逗号分割的dtype创建 从字典创建 操作结构化数据类型 Offsets 和Alignment Field ...

  10. 1.7.1- HTML表格table

    存在即是合理的,表格的是一种常用的标签,不是用来布局,常见是用处理 适合用表格table的地方: 创建表格: