《C++ Primer》第五版课后习题解答_第二章(5)(39-42)
来源:互联网 发布:淘宝单主持怎样找商家 编辑:程序博客网 时间:2024/06/07 10:56
系统环境: windows 10 1703
编译环境:Visual studio 2017
2.39
2.40
struct Sales_data { std::string bookID; unsigned sum_sold; float unit_price; float revenue;};
2.41
#include <iostream>#include <string>// 1.5.1节三个练习大同小异,故只编写了1.22的程序//创建 Sales_data 类struct Sales_data { std::string bookID; unsigned sum_sold = 0; float price = 0.0; float revenue = 0.0;};int main(){ Sales_data sum, book; while (std::cin >> book.bookID >> book.sum_sold >> book.price) { book.revenue = book.sum_sold * book.price; if (empty(sum.bookID)) //检查此时输入的数据是否为第一个(通过检查 sum 中的 bookID 是否为空字符串) { //若 sum 中 bookID 为空字符串,则把第一个输入的数据赋给 sum sum.bookID = book.bookID; sum.price = book.price; sum.sum_sold = book.sum_sold; sum.revenue = book.revenue; } else { if (sum.bookID == book.bookID) //如果次数输入的数据不是第一个,继续检查输入数据的 ISBN 是否和之前输入的 ISBN 相同 { // 若相同,则执行相加步骤 sum.sum_sold += book.sum_sold; sum.revenue += book.revenue; } else { // 若不同,则输出错误 std::cerr << "You must enter same book ISBN !!!" << std::endl; return -1; } } } std::cout << sum.bookID << " " << sum.sum_sold << " " << sum.revenue << std::endl; return 0;}input:
0-201-88954-4 2 15.00
0-201-88954-4 5 12.00
0-201-88954-4 7 12.00
0-201-88954-4 2 12.00
output:
0-201-88954-4 16 198
#include <iostream>#include <string>// 1.5.2 (同时也是1.6,实现相同的功能)//创建 Sales_data 类struct Sales_data { std::string bookID; unsigned sum_sold = 0; float price = 0.0; float revenue = 0.0;};int main(){ Sales_data trans, book; int cnt = 1; if (std::cin >> book.bookID >> book.sum_sold >> book.price) //读取第一条数据 { book.revenue = book.sum_sold * book.price; while (std::cin >> trans.bookID >> trans.sum_sold >> trans.price) //读取剩余的数据 { trans.revenue = trans.sum_sold * trans.price; if (trans.bookID == book.bookID) //判断此数据的 ISBN 和 book 保存的 ISBN 是否相同 { cnt += 1; book.sum_sold += trans.sum_sold; book.revenue += trans.revenue; } else { std::cout << cnt << " " << book.bookID << " " << book.sum_sold << " " << book.revenue << std::endl; book.bookID = trans.bookID; book.sum_sold = trans.sum_sold; book.revenue = trans.revenue; cnt = 1; } } std::cout << cnt << " " << book.bookID << " " << book.sum_sold << " " << book.revenue << std::endl; } return 0;}//程序运行过程如下
0-201-70353-X 4 24.99
0-201-82470-1 4 45.39
1 0-201-70353-X 4 99.96
0-201-88954-4 2 15.00
1 0-201-82470-1 4 181.56
0-201-88954-4 5 12.00
0-201-88954-4 7 12.00
0-201-88954-4 2 12.00
0-399-82477-1 2 45.39
4 0-201-88954-4 16 198
0-399-82477-1 3 45.39
0-201-78345-X 3 20.00
2 0-399-82477-1 5 226.95
0-201-78345-X 2 25.00
^Z
2 0-201-78345-X 5 110
2.42
//头文件#ifndef SALES_DATA_H#define SALES_DATA_H#include <string>struct Sales_data { std::string bookID; unsigned sum_sold = 0; float price = 0.0; float revenue = 0.0;};#endif // !SALES_DATA_H
//1.51节练习#include <iostream>#include <string>#include "Sales_data .h"int main(){ Sales_data sum, book; while (std::cin >> book.bookID >> book.sum_sold >> book.price) { book.revenue = book.sum_sold * book.price; if (empty(sum.bookID)) //检查此时输入的数据是否为第一个(通过检查 sum 中的 bookID 是否为空字符串) { //若 sum 中 bookID 为空字符串,则把第一个输入的数据赋给 sum sum.bookID = book.bookID; sum.price = book.price; sum.sum_sold = book.sum_sold; sum.revenue = book.revenue; } else { if (sum.bookID == book.bookID) //如果次数输入的数据不是第一个,继续检查输入数据的 ISBN 是否和之前输入的 ISBN 相同 { // 若相同,则执行相加步骤 sum.sum_sold += book.sum_sold; sum.revenue += book.revenue; } else { // 若不同,则输出错误 std::cerr << "You must enter same book ISBN !!!" << std::endl; return -1; } } } std::cout << sum.bookID << " " << sum.sum_sold << " " << sum.revenue << std::endl; return 0;}
//1.52节和1.6节练习#include <iostream>#include <string>#include "Sales_data .h"int main(){ Sales_data trans, book; int cnt = 1; if (std::cin >> book.bookID >> book.sum_sold >> book.price) //读取第一条数据 { book.revenue = book.sum_sold * book.price; while (std::cin >> trans.bookID >> trans.sum_sold >> trans.price) //读取剩余的数据 { trans.revenue = trans.sum_sold * trans.price; if (trans.bookID == book.bookID) //判断此数据的 ISBN 和 book 保存的 ISBN 是否相同 { cnt += 1; book.sum_sold += trans.sum_sold; book.revenue += trans.revenue; } else { std::cout << cnt << " " << book.bookID << " " << book.sum_sold << " " << book.revenue << std::endl; book.bookID = trans.bookID; book.sum_sold = trans.sum_sold; book.revenue = trans.revenue; cnt = 1; } } std::cout << cnt << " " << book.bookID << " " << book.sum_sold << " " << book.revenue << std::endl; } return 0;}
阅读全文
0 0
- 《C++ Primer》第五版课后习题解答_第二章(5)(39-42)
- 《C++ Primer》第五版课后习题解答_第二章(1)(01-08)
- 《C++ Primer》第五版课后习题解答_第二章(2)(09-20)
- 《C++ Primer》第五版课后习题解答_第二章(3)(21-29)
- 《C++ Primer》第五版课后习题解答_第二章(4)(30-38)
- 《C++ Primer》第五版课后习题解答_第三章(5)(37-45)
- 《C++ Primer》第五版课后习题解答_第五章(1)(01-08)
- 《C++ Primer》第五版课后习题解答_第五章(2)(09-14)
- 《C++ Primer》第五版课后习题解答_第五章(3)(15-19)
- 《C++ Primer》第五版课后习题解答_第五章(4)(20-25)
- 《C++ Primer》第五版课后习题解答_第三章(1)(01-05)
- 《C++ Primer》第五版课后习题解答_第三章(2)(06-20)
- 《C++ Primer》第五版课后习题解答_第三章(3)(21-29)
- 《C++ Primer》第五版课后习题解答_第三章(4)(30-36)
- 《C++ Primer》第五版课后习题解答_第四章(1)(01-20)
- 《C++ Primer》第五版课后习题解答_第四章(2)(21-33)
- 《C++ Primer》第五版课后习题解答_第四章(3)(34-38)
- 《C++ Primer》第五版课后习题解答_第六章(1)(01-07)
- 简单pandas存入
- 怎样解决计算机管理compmgmt.msc打不开
- mybatis动态sql使用
- mysql 按日结算
- 识别不同域名访问不同主页
- 《C++ Primer》第五版课后习题解答_第二章(5)(39-42)
- C#窗口居中
- 待补
- spring security 学习笔记
- 【jzoj5332】【NOIP2017提高A组模拟8.23】【密码】【ac自动机】【动态规划】
- mongodb命令行导入导出表数据
- bzoj 1690: [Usaco2007 Dec]奶牛的旅行(01分数规划--最优比率环)
- MYSQL Establishing SSL connection without server's identity verification is not recommended.
- Hibernate快速入门(修正可行)