首页 > 编程知识 正文

电影推荐(我不是药神票房分账明细)

时间:2023-05-05 11:08:57 阅读:70660 作者:1463

我今天看到了一个问题。 就像这样。 一个文件(m.dat )存储了每部电影的票房统计信息,如下所示:

《2012》索尼$769.7

《哈利波特与死亡圣器(上)》华纳兄弟$952.0

《星球大战》世纪福克斯$775.4

《怪物史莱克4》派拉蒙/梦工厂$750.0

《阿凡达》世纪福克斯$2,782.2

《哈利波特与火焰杯》华纳兄弟$895.9

《哈利波特与混血王子》华纳兄弟$934.0

《指环王2:双塔奇兵》新线$925.3

《蝙蝠侠前传2:黑暗骑士》华纳兄弟$ 1,001.9

《哈利波特与魔法石》华纳兄弟$974.7

《海底总动员》迪士尼$867.9

《功夫熊猫》派拉蒙/梦工厂$631.7

《加勒比海盗3:世界的尽头》迪士尼$961.0

《哈利波特与阿兹卡班的囚徒》华纳兄弟$795.6

《E.T.》环球$792.9

《夺宝奇兵4:水晶骷髅王国》派拉蒙$786.6

《指环王3:王者归来》新线$ 1,119.1

《怪物史莱克2》梦工厂$919.8

《玩具总动员3》迪士尼$ 1,063.2

《黑客帝国2:重装上阵》华纳兄弟$742.1。

要求编写节目单统计票房排名前十的电影,并将统计结果保存在单独的文件中。 自己尝试用c实现,代码共享如下。 (在linux上进行gcc编译) )。

gcc编译并在运行时传递两个命令行参数。 例如,/a.outhttp://www.Sina.com/(m.dat是来源票房文件,li.dat是存储前十名的文件)。

# include iostream # include fstream # include vector # includealgorithmusingnamespacestd; class Movie {public://重载输入操作friendistreamoperator (istream is,movie ) { returnismovie.m _ title movie.m _ comp const Movie movie ) ) returnosmovie.m _ title ' ' movie.m _ comp ' ' movie.) ) ) 652 (/)过载可以在}将从}private://文件读取的string转换为double并转换为doublegross(void ) const (stringstr ) m_gross ); size_t pos=0; wile () pos=str.find_first_of )、pos )!=//票房前的' $ '和',' string :3360 NPOs ] str.erase (pos,1 ); 返回atof (str.c _ str ); }string m_title; //电影名称string m_comp; //展出公司名string m_gross; //票房收入; //读取文件,读取结果为vector movie vmboolread (const char * file,VectormovieVM ) (ifstreamIFS ) file ); if (! ifs ) ({perror“打开票房文件失败”)返回假; }移动移动; 调用while(ifsmovie )//重载的操作员VM.push_back ); ifs.close (; 返回真; //写文件,将vectorMovie vm的数据写入文件boolwrite(constchar*file,const vectorMovie vm ) ofstream ofs (const char * file ) file ); if (! ofs ) {perror ) (“无法打开排名文件”); 返回假; } for (vector movie :3360 const _ iterator it=VM.begin (; it!=vm.end (; it ) ofs *it endl; //调用重载的操作员ofs.close (; 返回真; }判断}intmain(intargc,char* argv[] () /命令行参数数量是否合法if (argc3) ) {cerr的用法: ' argv(0) '票房成绩文件排名返回- 1; }向量移动虚拟机; if (! read(argv[1],vm ) ) return -1; sort(VM.Begin )、vm.end );//根据虚拟机中的元素对if(VM.size(10 ) VM.resize ) 10 )进行排序; //前10名的if (取)! 写入(argv [2],虚拟机) )返回- 1; 返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。