zoukankan      html  css  js  c++  java
  • [华为机试练习题]36.简单错误记录

    题目

    描写叙述:

    开发一个简单错误记录功能小模块,可以记录出错的代码所在的文件名称称和行号。

    处理: 1、 记录最多8条错误记录,循环记录,对同样的错误记录(净文件名称称和行号全然匹配)仅仅记录一条,错误计数添加。 2、 超过16个字符的文件名称称,仅仅记录文件的最后有效16个字符; 3、 输入的文件可能带路径。记录文件名称称不能带路径。

    题目类别:

    字符串  
    

    难度:

    中级  
    

    执行时间限制:

    10Sec 
    

    内存限制:

    128MByte 
    

    阶段:

    入职前练习  
    

    输入:

    一行或多行字符串。每行包含带路径文件名称称,行号,以空格隔开。
    如:E:V1R2productfpgadrive.c   1325
    

    输出:

    将全部的记录统计并将结果输出,格式:文件名称 代码行数 数目,一个空格隔开。如:
    fpgadrive.c 1325 1
    

    例子输入:

    E:V1R2productfpgadrive.c   1325
    

    例子输出:

    fpgadrive.c 1325 1
    

    注意

    假设记录的错误日志已经有8条了,就循环记录,意思就是新进来的一条错误日志(与之前没有反复)放在第一个位置,再新进来的一条错误日志(与之前没有反复)放在第2个位置,再新进来的一条错误日志(与之前没有反复)放在第三个位置。。

    。。

    。。。

    代码

    /*---------------------------------------
    *   日期:2015-07-02
    *   作者:SJF0115
    *   题目:简单错误记录
    *   来源:华为机试练习题
    -----------------------------------------*/
    #include <iostream>
    #include <vector>
    #include <string>
    #include <algorithm>
    #include <list>
    using namespace std;
    
    struct ErrorLog{
        string name;
        string line;
        int count;
    };
    // 创建错误日志实体
    ErrorLog CreateErrorLog(string name,string line){
        ErrorLog log;
        int nameSize = name.size();
        int index = -1;
        // 寻找下标
        for(int i = nameSize - 1;i >= 0;--i){
            if(name[i] == '\'){
                index = i;
                break;
            }//if
        }//for
        // 文件名称
        name = name.substr(index+1);
        nameSize = name.size();
        // 仅仅记录文件的最后有效16个字符
        if(nameSize > 16){
            name = name.substr(nameSize-16);
        }//if
        log.name = name;
        log.line = line;
        log.count = 1;
        return log;
    }
    // 记录错误日志
    void RecordErrorLog(int &number,ErrorLog log,vector<ErrorLog> &result){
        int size = result.size();
        bool isRepeat = false;
        for(int i = 0;i < size;++i){
            if(log.name == result[i].name && log.line == result[i].line){
                ++result[i].count;
                isRepeat = true;
                break;
            }//if
        }//for
        if(!isRepeat){
            if(size < 8){
                result.push_back(log);
            }//if
            else{
                result[number%8] = log;
            }//else
            ++number;
        }//if
    }
    
    int main(){
        string str;
        //freopen("C:\Users\Administrator\Desktop\c++.txt","r",stdin);
        vector<ErrorLog> result;
        string name,line;
    
        int number = 0;
        while(cin>>name>>line){
            ErrorLog log = CreateErrorLog(name,line);
            RecordErrorLog(number,log,result);
        }//while
    
        //输出
        for(int i = 0;i < result.size();++i){
            cout<<result[i].name<<" "<<result[i].line<<" "<<result[i].count<<endl;
        }//for
        return 0;
    }
    
  • 相关阅读:
    POJ--3667 Hotel
    Dragon Balls
    Popular Cows
    Tunnel Warfare [HDU--1540]
    CompletableFuture
    Future<V>
    分布式架构知识体系
    异步I/O和非阻塞I/O(轮询)
    同步异步阻塞非阻塞及并发级别
    volatile
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7017762.html
Copyright © 2011-2022 走看看