1.5.1节练习
练习1.20:在网站http://www.informit.com/title/o321714113上,第1章的代码目录中包含了头文件Sales_item.h。将它拷贝到你自己的工作目录(源码文件所在的文件夹)中。用它编写一个程序,读取一组书籍销售记录,将每条记录打印到标准输出上。
出题思路:练习如何使用其他人定义的类来创建、使用对象。
解答:
#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item book;
std::cout << "请输入销售记录: " << std::endl;
while (std::cin >> book){
std::cout << "ISBN、售出本数、销售额和平均售价为" << book << std::endl;
}
return 0;
}
练习1.21:编写程序,读取两个ISBN相同的Sales_item对象,输出它们的和。
出题思路:类对象的更复杂的使用,利用类接口进行运算。
解答:
#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item trans1, trans2;
std::cout << "请输入两条ISBN相同的销售记录:" << std::endl;
std::cin >> trans1 >> trans2;
if (compareIsbn(trans1, trans2))
std::cout << "汇总信息:ISBN、售出本数、销售额和平均售价为" << trans1 + trans2 << std:endl;
else
std::cout << "两条销售记录的ISBN不同" << std::endl;
return 0;
}
练习1.22:编写程序,读取多个具有相同ISBN的销售记录,输出所有记录的和。
出题思路:练习在处理数据流的过程中“状态”(是否是相同的ISBN)的保存和变迁。
解答:
#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item total, trans;
std::cout << "请输入几条ISBN相同的销售记录:" << std::endl;
if (std::cin >> total){
while (std::cin >> trans)
if (compareIsbn(total, trans)) // ISBN相同
total = total + trans;
else { // ISBN不同
std::cout << "ISBN不同" << std::endl;
return -1;
}
std::cout << "汇总信息:ISBN、售出本数、销售额和平均售价为" << total << std::endl;
}
else {
std::cout << "没有数据" << std::endl;
return -1;
}
return 0;
}