华为机试-简单错误记录
来源:互联网 发布:阿里妈妈 知乎 编辑:程序博客网 时间:2024/06/05 14:51
题目
描述:
开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。处理: 1、 记录最多8条错误记录,,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加;2、 超过16个字符的文件名称,只记录文件的最后有效16个字符;3、 输入的文件可能带路径,记录文件名称不能带路径。运行时间限制:
10Sec内存限制:
128MByte输入:
一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。如:E:\V1R2\product\fpgadrive.c 1325输出:
将所有的记录统计并将结果输出,格式:文件名 代码行数 数目,一个空格隔开,如:fpgadrive.c 1325 1样例输入:
E:\V1R2\product\fpgadrive.c 1325样例输出:
fpgadrive.c 1325 1注意
如果记录的错误日志已经有8条了,就循环记录,意思就是新进来的一条错误日志(与之前没有重复)放在第一个位置,再新进来的一条错误日志(与之前没有重复)放在第2个位置,再新进来的一条错误日志(与之前没有重复)放在第三个位置。。。。。。。。
#include <iostream>#include <vector>#include <string> using namespace std;class ErrorRecord{public: ErrorRecord(const string &str1, unsigned int line_no1, int count1 = 0):str(str1), line_no(line_no1), count(count1) {} ~ErrorRecord() {} string str; unsigned int line_no; int count;}; void getStaData(vector<ErrorRecord *> &record_vec, const string &str, unsigned int line_no){ int i; for (i = 0; i < record_vec.size(); i++) { if (record_vec[i]->str.compare(str) == 0 && record_vec[i]->line_no == line_no) { record_vec[i]->count++; break; } } if (i == record_vec.size()) { ErrorRecord *tmp = new ErrorRecord(str, line_no, 1); record_vec.push_back(tmp); }} void sortRecord(vector<ErrorRecord *> &record_vec){ if (record_vec.size() <= 1) return ; for (int i = 1; i < record_vec.size(); i++) { ErrorRecord *tmp = record_vec[i]; int j; for (j = i; j >= 1; j--) { if (tmp->count > record_vec[j - 1]->count) record_vec[j] = record_vec[j - 1]; else break; } record_vec[j] = tmp; }} int main(void){ string str0; unsigned int line_no; vector<ErrorRecord *> record_vec; while (cin >> str0 >> line_no) { auto last_pos = str0.rfind("\\"); string file_name = str0.substr(last_pos + 1); getStaData(record_vec, file_name, line_no); } sortRecord(record_vec); int put_cnt = record_vec.size() > 8 ? 8 : record_vec.size(); for (int i = 0; i < put_cnt; i++) { string &tmp = record_vec[i]->str; string str = tmp; if (tmp.size() > 16) str = tmp.substr(tmp.size() - 16); cout << str << " " << record_vec[i]->line_no << " " << record_vec[i]->count << endl; } return 0;}
0 0
- 华为机试-简单错误记录
- [华为机试]简单错误记录
- 华为机试---简单错误记录
- 华为机试-简单错误记录
- 【华为机试】简单错误记录
- 【华为】简单错误记录
- [华为机试练习题]36.简单错误记录
- 《华为机试在线训练》之简单错误记录
- [华为机试题]简单错误记录
- [华为机试题]简单错误记录
- 华为oj 简单错误记录
- 【华为OJ】简单错误记录
- 【华为OJ19】简单错误记录
- 华为OJ-------简单错误记录
- 华为-简单错误记录-Java
- 华为机试题2016(一) 简单错误记录
- 华为机试题——简单错误记录
- 华为OJ(简单错误记录)
- 迷你音乐播放器(一)
- BZOJ 3994
- Internet 组管理协议
- HDU 5478 Can you find it (卡常数)2015 ACM/ICPC Asia Regional Shanghai Online
- winsocket程序编写
- 华为机试-简单错误记录
- 我的第一次软件测试成果展示
- linux驱动知识点总结
- Hibernate--------- Could not bind factory to JNDI
- 有关函数模板和类模板的说法
- UML之构件图(Component Diagram)
- android如何让service不被杀死
- Css3基本用法
- 解决使用github中,拒绝上传代码问题