zoukankan      html  css  js  c++  java
  • 1130.日志排序

    题目描述:

    有一个网络日志,记录了网络中计算任务的执行情况,每个计算任务对应一条如下形式的日志记录:
    “hs_10000_p”是计算任务的名称,
    “2007-01-17 19:22:53,315”是计算任务开始执行的时间“年-月-日 时:分:秒,毫秒”,
    “253.035(s)”是计算任务消耗的时间(以秒计)
    hs_10000_p 2007-01-17 19:22:53,315 253.035(s)
    请你写一个程序,对日志中记录计算任务进行排序。
    时间消耗少的计算任务排在前面,时间消耗多的计算任务排在后面。
    如果两个计算任务消耗的时间相同,则将开始执行时间早的计算任务排在前面。

    输入:

    日志中每个记录是一个字符串,每个字符串占一行。最后一行为空行,表示日志结束。日志中最多可能有10000条记录。
    计算任务名称的长度不超过10,开始执行时间的格式是YYYY-MM-DD HH:MM:SS,MMM,消耗时间小数点后有三位数字。
    计算任务名称与任务开始时间、消耗时间之间以一个或多个空格隔开,行首和行尾可能有多余的空格。

    输出:

    排序好的日志记录。每个记录的字符串各占一行。
    输入的格式与输入保持一致,输入包括几个空格,你的输出中也应该包含同样多的空格。

    样例输入:
    hs_10000_p   2007-01-17 19:22:53,315     253.035(s)
    hs_10001_p   2007-01-17 19:22:53,315     253.846(s)
    hs_10002_m   2007-01-17 19:22:53,315     129.574(s)
    hs_10002_p   2007-01-17 19:22:53,315     262.531(s)
    hs_10003_m   2007-01-17 19:22:53,318     126.622(s)
    hs_10003_p   2007-01-17 19:22:53,318     136.962(s)
    hs_10005_m   2007-01-17 19:22:53,318     130.487(s)
    hs_10005_p   2007-01-17 19:22:53,318     253.035(s)
    hs_10006_m   2007-01-17 19:22:53,318     248.548(s)
    hs_10006_p   2007-01-17 19:25:23,367    3146.827(s)
    样例输出:
    hs_10003_m   2007-01-17 19:22:53,318     126.622(s)
    hs_10002_m   2007-01-17 19:22:53,315     129.574(s)
    hs_10005_m   2007-01-17 19:22:53,318     130.487(s)
    hs_10003_p   2007-01-17 19:22:53,318     136.962(s)
    hs_10006_m   2007-01-17 19:22:53,318     248.548(s)
    hs_10000_p   2007-01-17 19:22:53,315     253.035(s)
    hs_10005_p   2007-01-17 19:22:53,318     253.035(s)
    hs_10001_p   2007-01-17 19:22:53,315     253.846(s)
    hs_10002_p   2007-01-17 19:22:53,315     262.531(s)
    hs_10006_p   2007-01-17 19:25:23,367    3146.827(s)


    #include<iostream>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    struct diary{
        string input;
        string name;
        string data;
        string time;
    };
    
    diary a[10001];
    
    bool compare(diary n,diary m){
        if(n.time.size()!=m.time.size()) return n.time.size()<m.time.size();
        else {
             if(n.time!=m.time) return n.time<m.time;
             else return n.data<m.data;
        }
    }
    
    int main(){
        int i=0;
        while(getline(cin,a[i].input) && a[i].input!=" "){
            /*提取name*/
            int j,pos1,pos2;
            int len=a[i].input.size();
            for(j=0;j<len;j++){
                if(a[i].input[j]!=' ') {
                    pos1=j;
                    break;
                }
            }
            for(j=pos1;j<len;j++){
                if(a[i].input[j]==' '){
                    pos2=j;
                    break;
                }
            }
            a[i].name=a[i].input.substr(pos1,pos2-pos1);
            /*提取start*/
            int pos3,pos4,pos5;
            for(j=pos2;j<len;j++){
                if(a[i].input[j]!=' '){
                    pos3=j;
                    break;
                }
            } 
            for(j=pos3;j<len;j++){
                if(a[i].input[j]==' '){
                    pos4=j;
                    break;
                }
            }
            for(j=pos4+1;j<len;j++){
                if(a[i].input[j]==' '){
                    pos5=j;
                    break;
                }
            }
            a[i].data=a[i].input.substr(pos3,pos5-pos3);
            /*提取time*/
            int pos6,pos7;
            for(j=pos5;j<len;j++){
                if(a[i].input[j]!=' '){
                    pos6=j;
                    break;
                }
            }
            pos7=a[i].input.find(')')+1;
            a[i].time=a[i].input.substr(pos6,pos7-pos6);
            i++;
        }
        sort(a,a+i,compare);
        for(int j=0;j<i;j++){
            cout<<a[j].input<<endl;
        }
        return 0;
    }
  • 相关阅读:
    屠蛟之路_重伤的屠蛟俊_ThirdDay
    屠蛟之路_重登数据库大山_SecondDay
    屠蛟之路_你的名字_FirstDay
    Beta版本冲刺计划及安排
    软件工程作业1203
    导师互选系统 Alpha版冲刺总结
    屠龙之路_项目测试
    【Alpha】十天屠龙记
    屠龙之路_冲刺总结随笔
    My97日历控件常用功能记录
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/9735075.html
Copyright © 2011-2022 走看看