c++练习

编程入门 行业动态 更新时间:2024-10-03 02:23:01

c++练习

c++练习

题目:
高性能运算需要统计年计算量,按core/小时收费
要求:
1.找出使用时间 <24小时的用户,删除掉该记录,输出最终排序后结果。
2.修改并补全demo.cpp代码。

文件

zhang 0.292778
huang 0.020000
xing 269970.744200
lisi 1142826.668000
wangbo 0.138889
lichao 715.458333
zhangta 36579.698890
jiami 12175.304720
tian 1749160.207000
wang5 2.447222
geng 627.357778
yang 1249.143333
wangxue 4879.451389
yuemu 1231745.881000
wangy 0.001111
demo 274168.746100
cui 0.000000
jing 87924.224440
lusu 2346727.028000
xxxx 1.425278
zhangfei 0.166667
wyibo 417411.457500
yangai 2627.677778
cao 0.039444
huangt 52.162222
wbiti11129 17018.470560
lilaoshi 11.533333
wangshi 398.188333
laoshi 43.765556
caojing 626.561667
test3 66.179444
lihua 33894.585560
hongtongtong 0.498056
wruan 3242309.689000
hping_c1 9.558611

demo.cpp

#include <fstream>
#include <string>
#include <cstdlib>
#include <vector>
#include <algorithm>
#include <iterator>
#include <functional>
using namespace std;
//using namespace std::placeholders;struct CoreUser {string user;double cost;
};istream& operator>>(istream& in, CoreUser& core) {in >> core.user >> core.cost;return in;
}struct SortUser {bool operator()(const CoreUser& u1, const CoreUser& u2) {return u1.cost < u2.cost;}
};int main(int argc, char **argv) {//if (argc < 2)return EXIT_FAILURE;ifstream in("total.txt");if (!in)return EXIT_FAILURE;CoreUser u;vector<CoreUser> v;while (in >> u) {v.push_back(u);}// type your code bellow.in.close();
}

思路:
1.筛选:不符合条件的用v.erase(iter)删除
2.排序:demo中提供了SortUser()函数可作为函数对象传入sort中
3.输出:copy函数

#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <vector>
#include <algorithm>
#include <iterator>
#include <functional>
#include <iomanip>
using namespace std;
//using namespace std::placeholders;struct CoreUser {string user;double cost;
};
istream& operator>>(istream& in, CoreUser& core) {in >> core.user >> core.cost;return in;
}bool operator<(const CoreUser &c,const double time){return c.cost<time;
}
ostream& operator<<(ostream& out,const CoreUser &core){cout.setf(ios::left);//设置为左对齐,默认右对齐out<<setw(10)<<core.user<<"\t"<<core.cost;return out;
}struct SortUser {bool operator()(const CoreUser& u1, const CoreUser& u2) {return u1.cost < u2.cost;}
};int main(int argc, char **argv) {//if (argc < 2)return EXIT_FAILURE;ifstream in("total.txt");if (!in)return EXIT_FAILURE;CoreUser u;vector<CoreUser> v;while (in >> u) {v.push_back(u);}// type your code bellow.vector<CoreUser>::iterator it=v.begin();for(;it!=v.end();it++){//u=*it;if(it->cost<24){v.erase(it);it--;}}sort(v.begin(),v.end(),SortUser());copy(v.begin(),v.end(),ostream_iterator<CoreUser>(cout,"\n"));in.close();
}

输出:

laoshi          43.7656
huangt          52.1622
test3           66.1794
wangshi         398.188
caojing         626.562
geng            627.358
lichao          715.458
yang            1249.14
yangai          2627.68
wangxue         4879.45
jiami           12175.3
wbiti11129      17018.5
lihua           33894.6
zhangta         36579.7
jing            87924.2
xing            269971
demo            274169
wyibo           417411
lisi            1.14283e+006
yuemu           1.23175e+006
tian            1.74916e+006
lusu            2.34673e+006
wruan           3.24231e+006

遇到的问题:

1.重载"<<"
ostream& operator<<(ostream& out,CoreUser &core){cout.setf(ios::left);//设置为左对齐,默认右对齐out<<setw(10)<<core.user<<"\t"<<core.cost;return out;
}
erroe:no match for 'operator<<' {operand types are 'std::ostreaem_iterator<CoreUser>::…… {……}' and '……'}
改正:
ostream& operator<<(ostream& out,const CoreUser &core){ }2.输出格式:
#include <iomanip>
cout.setf(ios::left) 设置为左对齐,默认右对齐
setw(n) :设域宽为n3.读取文件ifstream in("total.txt");if (!in)return EXIT_FAILURE;CoreUser u;vector<CoreUser> v;while (in >> u) {v.push_back(u);}

更多推荐

c++练习

本文发布于:2024-02-28 15:46:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770095.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!