C++初级问题,请各位高手解我埋藏心里很久的疑问!
int main()
{
Sales_item total,trans;
if (std::cin>>total){
while(std::cin>>trans)
if (total.same_isbn(trans))
total=total+trans;
else{
std::cout<<total<<std::endl;
total=trans;
}
std::cout<<total<<std;:endl;
}else{
std::cout<<"No data?!"<<std::endl;
return -1;
}
return 0;
}
大家请看这条代码,这是一个sales_item类,total与trans是它的两个对象,我的问题是循环语句里面的疑问,按这代码的意思,如果total与trans输入的格式一样,则将total+trans=total,这条还好理解,可是如果格式不一样,那下面的输出total还好理解,但是将trans这个不合格式的值重新赋于total又有什么意义呢?就算输入的是一个有意义的,也合格式的输入,不合格式的+合格式的,能得出一个什么结论呢?
希望各位高手帮我解答一下,小弟在此谢过!
[解决办法]
这只是个示例程序,功能比较简单。
意思是说,在遇到不同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; }
[解决办法]
顶楼上的 说的很仔细呢
[解决办法]
http://www.rupeng.com/forum/thread-263-1-1-uid11036.html
学习的好网站
[解决办法]
[解决办法]
操,C++primer根本不适合初学者,上面的源代码还可以,文字术语带点卖弄风骚的感觉。
最好看谭浩强写的《C++程序设计》源代码也好,文字也很平易近人
[解决办法]
[解决办法]
楼主,我想大概这个程序时这个意思的:
数据呢是所有一样的isbn都是在一起的,
例如:(1元 isbn:001)(1元 isbn:001)(2元 isbn:002)(1元 isbn:002)(1元 isbn:003),
你模拟下程序应该是这样的:把前两个先加和,但是碰到第三个了,不一样的isbn了,则输出加和后的isbn为001的数据,然后在加和isbn为002的数据赋值给total,在继续输入。
估计题目没有说明白:就是加和一个集合中所有相同isbn的对象。
但是对数据的要求是:所有相同isbn都在一起的。