[解决办法] 这只是个示例程序,功能比较简单。 意思是说,在遇到不同isbn的输入后,首先输出上前面统计出来的total,然后把新的trans赋给total,此时老的total信息就已经丢掉了,又开始用于统计另一个isbn。 [解决办法] 什么教材啊?这一点很重要。 [解决办法] Sales_item 类,贴出来 [解决办法] 这是C++ primer里的吧 Sales_item 这里应该 有对+ = 号重载过 所以你在使用类对象 可以用直接+ =号 [解决办法] 楼主知不知道isbn是什么意思? [解决办法] c++ primer原文是这样的:假定给定ISBN的所有交易出现在一起。程序将把每个 ISBN 的数据组合至命名为 total 的 Sales_item 对象中。从标准输入中读取的每一笔交易将被存储到命名为 trans 的第二个 Sales_item 对象中。每读取一笔新的交易,就将它与 total 中的 Sales_item 对象相比较,如果对象含有相同的 ISBN,就更新 total ;否则就输出 total 的值,并使用刚读入的交易重置 total。 Sales_item book; // read ISBN, number of copies sold, and sales price
C/C++ code
#include <iostream> #include "Sales_item.h" int main() { // declare variables to hold running sum and data for the next record Sales_item total, trans; // is there data to process? if (std::cin >> total) { //判断是否输入了total,有则进入循环 // if so, read the transaction records while (std::cin >> trans) //如果输入了一笔交易 if (total.same_isbn(trans)) //判断total的isbn与新输入的交易ISBN是否相同 // match: update the running total total = total + trans; //相同则相加,即将两个对象的各个属性相加得到一个新对象 else { // no match: print & assign to total std::cout << total << std::endl; //不相同,先输出TOTAL total = trans; //再将trans赋值给total, //前提是确的格式,不正确的格式是 //没法实现用"="的 } // remember to print last record std::cout << total << std::endl; } else { //没有输入,则警告用户 // no input!, warn the user std::cout << "No data?!" << std::endl; return -1; // indicate failure } return 0; } [解决办法] 顶楼上的 说的很仔细呢