首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++初级有关问题,请解小弟我埋藏心里很久的疑问

2012-09-07 
C++初级问题,请各位高手解我埋藏心里很久的疑问!int main(){Sales_item total,transif (std::cintotal)

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;    }
[解决办法]
顶楼上的 说的很仔细呢
探讨
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 recordswhile (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 }return0;
}

楼主,看了之后应该明白了吧?


[解决办法]
http://www.rupeng.com/forum/thread-263-1-1-uid11036.html

学习的好网站
[解决办法]
探讨
引用:
这只是个示例程序,功能比较简单。
意思是说,在遇到不同isbn的输入后,首先输出上前面统计出来的total,然后把新的trans赋给total,此时老的total信息就已经丢掉了,又开始用于统计另一个isbn。


请问你说的新的trans值替换给老的total!      是指的刚开始输入的不同的ISBN换给老的total吗?

如果是这样,既然新的不同或者说不合格没办法计算,那换个老的total时,再输入新的合格的trans时,用换过的不合格的total+新的合格的trans,有什么意义吗?我主要是这个不懂!

[解决办法]
操,C++primer根本不适合初学者,上面的源代码还可以,文字术语带点卖弄风骚的感觉。
最好看谭浩强写的《C++程序设计》源代码也好,文字也很平易近人
[解决办法]
探讨
引用:
这只是个示例程序,功能比较简单。
意思是说,在遇到不同isbn的输入后,首先输出上前面统计出来的total,然后把新的trans赋给total,此时老的total信息就已经丢掉了,又开始用于统计另一个isbn。


请问你说的新的trans值替换给老的total!      是指的刚开始输入的不同的ISBN换给老的total吗?

如果是这样,既然新的不同或者说不合格没办法计算,那换个老的total时,再输入新的合格的trans时,用换过的不合格的total+新的合格的trans,有什么意义吗?我主要是这个不懂!

[解决办法]
楼主,我想大概这个程序时这个意思的:
数据呢是所有一样的isbn都是在一起的,
例如:(1元 isbn:001)(1元 isbn:001)(2元 isbn:002)(1元 isbn:002)(1元 isbn:003),
你模拟下程序应该是这样的:把前两个先加和,但是碰到第三个了,不一样的isbn了,则输出加和后的isbn为001的数据,然后在加和isbn为002的数据赋值给total,在继续输入。

估计题目没有说明白:就是加和一个集合中所有相同isbn的对象。
但是对数据的要求是:所有相同isbn都在一起的。

热点排行