C++实验——对高算用户排序

本实验聚焦于面向对象编程技巧与STL中的deque容器应用,通过统计某大学高性能运算用户使用情况,实现了筛选并删除使用时间小于24小时的用户记录,最终输出排序后的结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验目的:

  1. 练习面向对象编程;

  2. 练习STL中deque容器的使用;

  3. 能根据要求实现相应的功能。

实验说明: 

  1. 某某大学高性能运算需要统计年计算量,按core/小时收费 。       

实验要求: 

  1. 找出使用时间 <24小时的用户,删除掉该记录,输出最终排序后结果。

 实验材料:

  • 说明:将下面数据复制到新建一个txt文档命名为core_time.txt文件中,文件放到D盘下。
wrb   	3242309.689
luhg   	2346727.028
tianxx   	1749160.207
yuewenmu   	1231745.881
lisidian   	1142826.668
wyb   	417411.4575
demouser   	274168.7461
xlt   	269970.7442
yangjing   	87924.22444
zhangt   	36579.69889
lihua   	33894.58556
wbt11129   	17018.47056
jhadmin   	12175.30472
wrxue   	4879.451389
yangxingli  	2627.677778
yangwn   	1249.143333
fanglichao  	715.4583333
genghj   	627.3577778
caoguojin   	626.5616667
wanglaoshi  	398.1883333
jhtest3   	66.17944444
htli   	52.16222222
lvlaoshi   	43.76555556
lilaoshi   	11.53333333
hpc_c1   	9.558611111
wangwei   	2.447222222
root   	1.425277778
hongtongtong	0.498055556
zhanglei   	0.292777778
zhangpengfei	0.166666667
wangruibo   	0.138888889
caofy   	0.039444444
hrl   	0.02
wangy   	0.001111111
cuiziheng   	0

实验代码:

#include <iostream>
#include <deque>
#include <string>
#include <fstream>
#include <iterator>
#include <algorithm>

using namespace std;

class User;
ostream& operator<<(ostream& os,User& U);

class User  //用户类
{
public:
    string Name;
    double Time;
public:
    User(string name,double time):Name(name),Time(time){}
    string GetName()
    {
        return Name;
    }
    double GetTime()
    {
        return Time;
    }
};

class Print:public unary_function<User,void>   //打印的函数对象
{
private:
    deque<User>deq_u;
public:
    Print(deque<User>& u):deq_u(u){}
    void operator()(User& u)
    {
        cout << u << endl;
    }
};
ostream& operator<<(ostream& os,User& U)    //重载输出流
{
    os << U.GetName() << "\t" << U.GetTime() << endl;
    return os;
}
istream& operator>>(istream& is,User& U)    //重载输入流
{
    is >> U.Name >> U.Time;
    return is;
}
void test()
{
    ifstream in;
    in.open("D:\\Score_time.txt");
    if(!in)
    {
        cout << "文件读入错误!" << endl;
    }
    User u(" ",0.0);
    deque<User>deq_u;
    int c = 0;      //用来计数有多少个符合要求的用户
    while(!in.eof())
    {
        in >> u;
        if(u.Time > 24.0)
        {
            deq_u.push_back(u);
        }
        c++;
    }
    for_each(deq_u.begin(),deq_u.end(),Print(deq_u));
    cout << deq_u.size() << "\t" << c << endl;
    //copy(deq_u.begin(),deq_u.end,ostream_iterator<User>(cout,"\t"));
    in.close();
}
int main()
{
    test();
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值