当前位置: 首页 > news >正文

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;
}

在这里插入图片描述

http://www.lryc.cn/news/176350.html

相关文章:

  • 爬楼梯Java(斐波那契数列)
  • Maven项目package为jar包后在window运行报A JNI error has occurred
  • iview 的table表格组件使单元格可编辑和输入
  • 统计的基本概念及抽样分布
  • 【C++】class的设计与使用(四)this指针
  • mysql 导入sql文件
  • springcloud:三、ribbon负载均衡原理+调整策略+饥饿加载
  • 【Unity编辑器扩展】Tranform组件自定义扩展,复制位置旋转缩放数据
  • 自动驾驶领域中的CMS系统应用探讨
  • 十分钟理解OSPF路由协议
  • Python 编程基础 | 第一章-预备知识 | 1.4、包管理工具
  • delphi中使用CADVCL 10.0 Enterprise控件解析DXF文件生成图片保存到本地
  • Hazelcast系列(三):hazelcast管理中心
  • QT 绘画功能的时钟
  • 设计模式之道-模板方法模式
  • 头哥的实践平台的Linux文件/目录管理
  • 软件测试基本常识
  • Xmake v2.8.3 发布,改进 Wasm 并支持 Xmake 源码调试
  • Serverless 数仓技术与挑战(内含 PPT 下载)
  • 九牧小牧携手国家队!一场“中国卫浴“和“中国体育”的双向奔赴
  • crypto:Quoted-printable
  • 【六级】作文模板-议论文-问题解决
  • leetcodetop100 (22) 反转链表
  • RabbitMQ配置文件_修改RabbitMQ MQTT的1883端口
  • 【Graph Net学习】LINE实现Graph Embedding
  • docker安装使用xdebug
  • (1) ESP32获取图像,并通过电脑端服务器显示图像
  • 乐鑫科技全球首批支持蓝牙 Mesh Protocol 1.1 协议
  • 1.算法——数据结构学习
  • 信息论基础第二章阅读笔记