C++ Primer----1.5类简介 章节练习
头文件 Sales_item.h
#ifndef SALESITEM_H
#define SALESITEM_H
#include <iostream>
#include <string>class Sales_item{
public:Sales_item(const std::string &book):isbn(book),units_sold(0),revenue(0.0){}Sales_item(std::istream &is){ is >> *this;}friend std::istream& operator>>(std::istream &,Sales_item &);friend std::ostream& operator<<(std::ostream &,const Sales_item &);
public:Sales_item & operator+=(const Sales_item&);
public:double avg_price() const;bool same_isbn(const Sales_item &rhs)const{return isbn == rhs.isbn;}Sales_item():units_sold(0),revenue(0.0){}
public:std::string isbn;unsigned units_sold;double revenue;
};using std::istream;
using std::ostream;
Sales_item operator+(const Sales_item &,const Sales_item &);inline bool operator==(const Sales_item &lhs,const Sales_item &rhs){return lhs.units_sold == rhs.units_sold && lhs.revenue == rhs.revenue && lhs.same_isbn(rhs);
}inline bool operator!=(const Sales_item &lhs,const Sales_item &rhs){return !(lhs == rhs);
}inline Sales_item & Sales_item::operator +=(const Sales_item &rhs){units_sold += rhs.units_sold;revenue += rhs.revenue;return *this;
}inline Sales_item operator+(const Sales_item &lhs,const Sales_item &rhs){Sales_item ret(lhs);ret += rhs;return ret;
}inline istream& operator>>(istream &in,Sales_item &s){double price;in >> s.isbn >> s.units_sold >> price;if(in)s.revenue = s.units_sold * price;elses = Sales_item();return in;
}inline ostream& operator<<(ostream &out,const Sales_item &s){out << s.isbn << "\t" <<s.units_sold << "\t" << s.revenue << "\t" << s.avg_price();return out;
}inline double Sales_item::avg_price() const{if(units_sold)return revenue/units_sold;elsereturn 0;
}
#endif
1.20
// exe 1.20
#include <iostream>
#include "Sales_item.h"using namespace std;int main()
{Sales_item book;cout << "请输入销售记录:"<< endl;while (cin >> book) {cout << "ISBN、售出本数和平均售价为 "<< book << endl;}return 0;
}

1.21
// exe 1.21
#include <iostream>
#include "Sales_item.h"using namespace std;int main()
{Sales_item book1, book2;cin >> book1 >> book2;cout << book1 + book2 << endl;return 0;
}

1.22
// exe 1.22
#include <iostream>
#include "Sales_item.h"using namespace std;int main()
{Sales_item total;if(cin >> total) {Sales_item trans;while(cin >> trans){total += trans;}cout << total << endl;} else {cout << "No data!" << endl;return -1;}return 0;
}

相关文章:
C++ Primer----1.5类简介 章节练习
头文件 Sales_item.h #ifndef SALESITEM_H #define SALESITEM_H #include <iostream> #include <string>class Sales_item{ public:Sales_item(const std::string &book):isbn(book),units_sold(0),revenue(0.0){}Sales_item(std::istream &is){ is >&…...
爬楼梯Java(斐波那契数列)
题目:有n阶楼梯,一次只能爬一层或者两层,请问有多少种方法? 这类题目其实都可以用斐波那契数列来解决,比如: 一阶楼梯只有一种方法 二阶楼梯有(11,2)两种方法 三阶楼梯有(111,12,21)三种方法 四阶楼梯有(1111,121,112,22,211)五种方式 五阶楼梯有(11111,1112,122,1211,1…...
Maven项目package为jar包后在window运行报A JNI error has occurred
原因:本地java版本与项目结构中使用的java版本不一致(之前因为别的需求把idea的java版本改为了18) 解决方法 打开项目结构,将idea的java版本改为与本地一致 再修改项目中的pom.xml 重新编译,package即可...
iview 的table表格组件使单元格可编辑和输入
表格的列定义中,在需要编辑的字段下使用render函数 template表格组件 <Table border :data"data" :columns"tableColumns" :loading"loading"></Table>data中定义table对象 table: {tableColumns: [{title: 商品序号,k…...
统计的基本概念及抽样分布
文章目录 🍋引言🍋总体(Population)🍋总体参数 🍋样本(Sample)🍋随机样本🍋样本统计量 🍋统计量(Statistic)🍋…...
【C++】class的设计与使用(四)this指针
this指针 this作用域是在类内部,只能在成员函数中使用;this在成员函数的开始前构造,在成员函数的结束后清除;编译器在编译的时候也会自动加上this,它作为非静态成员函数的隐含形参,对各成员的访问均通过th…...
mysql 导入sql文件
mysql 导入sql文件 sudo mysql -uroot -p123456 -h127.0.0.1 sudo mysql -uroot -p123456 -h127.0.0.1然后 show databases;然后 use 数据库名称; 然后 source 20230920031001.sql;如果不加 -h127.0.0.1 可能会出现错误 /var/lib/mysql.sock error 通过 navicat导入的话&am…...
springcloud:三、ribbon负载均衡原理+调整策略+饥饿加载
Ribbon负载均衡原理 调整Ribbon负载均衡策略 第一种会对order-service里所有的服务消费者都采用该新规则 第二种会针对order-service里某个具体的服务消费者采用该新规则 饥饿加载...
【Unity编辑器扩展】Tranform组件自定义扩展,复制位置旋转缩放数据
目录 一、Tranform组件数据的扩展 二、 RectTransform组件数据的扩展 很多时候我们在做Tranform属性配置的时候需要反复的获取对象的位置信息,旋转信息。这个时候有个方便的工具会使得我们的效率大大提升。 一、Tranform组件数据的扩展 1.可以复制世界坐标,世界旋转 V…...
自动驾驶领域中的CMS系统应用探讨
由佐思汽研主办的“ ICVS汽车智能网联大会”正式启幕,邀请Tier1、软件供应商、操作系统商、智能驾驶及智能驾舱相关企业,共同探讨行业现状、创新技术应用交流、以及未来行业发展趋势等。 赛格导航视频产品线总监刘玉龙应邀参加本次大会,并发…...
十分钟理解OSPF路由协议
十分钟理解OSPF路由协议 1.RIP的缺陷以跳数为度量值最大跳数为15更新路由表采用全更新收敛速度慢 2.RIP与OSPF比较OSPF概述运行OSPF协议之前运行OSPF协议之后 3.OSPF协议工作过程1.发现邻居2.建立邻接关系3.传递链路状态信息4.计算路由 4.OSPF分区域管理 有RIP协议,…...
Python 编程基础 | 第一章-预备知识 | 1.4、包管理工具
一、包管理工具 1、pip简介 pip是Python自带的包管理器,它可以帮助我们安装、升级和卸载Python包。Python包是一组Python模块,它们可以提供各种功能,例如数据分析、Web开发、机器学习等等。pip可以让我们轻松地安装这些包,以便我…...
delphi中使用CADVCL 10.0 Enterprise控件解析DXF文件生成图片保存到本地
使用案例demos中GettingStarted案例 修改OnClick方法 更换代码 varvDrawing: TsgCADDXFImage;I: Integer;vEnt: TsgDXFEntity;vDXFImage:TsgCADImage;Bitmap: TBitmap;jpg: TJpegImage; beginvDrawing : TsgCADDXFImage.Create;vDrawing.LoadFromFile(d:\Entities.dxf);for …...
Hazelcast系列(三):hazelcast管理中心
系列文章 Hazelcast系列(一):初识hazelcast Hazelcast系列(二):hazelcast集成 Hazelcast系列(三):hazelcast管理中心 目录 前言 平台搭建 测试 其他 参考 总结 前言 前面,我们通过几种配置方式(Hazelcast系…...
QT 绘画功能的时钟
.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPaintEvent> #include <QDebug> //信息调试类 #include <QPainter> #include <QPixmap> //图像引擎类 #include <QTime> #include <QTimer> …...
设计模式之道-模板方法模式
文章目录 模板方法模式简介作用模板方法模式的缺点模板方法模式的应用场景业务场景开源框架中的应用 对比回调和Hook模式关于组合优先于继承 关于设计模式乱用的现象 模板方法模式 简介 模板方法模式是一种行为型设计模式,该设计模式的核心在于通过抽象出一套相对…...
头哥的实践平台的Linux文件/目录管理
一 Linux 文件/目录管理 1.本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下: 新创建两个文件空文件file1和file2。 删除系统已存在的两个文件oldFile1和oldFile2。 #!/bin/bash#在以下部分写出完成任务的命令 #***********begi…...
软件测试基本常识
【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程,刷完面试就稳了,你也可以当高薪软件测试工程师(自动化测试) 一、测试用例的编写 1.在测试中最重要的文档,他是测试工作的核心,是一组在测试时…...
Xmake v2.8.3 发布,改进 Wasm 并支持 Xmake 源码调试
Xmake 是一个基于 Lua 的轻量级跨平台构建工具。 它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时。 它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好&#x…...
Serverless 数仓技术与挑战(内含 PPT 下载)
近期,Databend Labs 联合创始人张雁飞发表了题为「Serverless 数仓技术与挑战」的主题分享。以下为本次分享的精彩内容: 主题: 「Serverless 数仓技术与挑战」 演讲嘉宾: 张雁飞 嘉宾介绍: Databend Labs 联合创始人…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
