【华为OJ】简单错误记录【未完成】

来源:互联网 发布:疯狂java讲义代码 编辑:程序博客网 时间:2024/06/09 17:11

描述

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

 

处理: 

 

1、 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加;

 

2、 超过16个字符的文件名称,只记录文件的最后有效16个字符;

 

3、 输入的文件可能带路径,记录文件名称不能带路径。


知识点字符串运行时间限制0M内存限制0输入

一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。

 

如:E:\V1R2\product\fpgadrive.c   1325


输出

将所有的记录统计并将结果输出,格式:文件名 代码行数 数目,一个空格隔开,如:

 

 fpgadrive.c 1325 1


样例输入E:\V1R2\product\fpgadrive.c 1325样例输出fpgadrive.c 1325 1
#include<iostream>#include<string>#include<vector>using namespace std;struct mistake{string truename;string num;string showname;};int main(){string s1;char s2[100][100];vector<mistake>vec;vector<mistake>::iterator p;mistake mis[10];int count = 0,j=0;while(getline(cin, s1)){count++;int length = s1.size();int flag1,flag2,flag3;for (int i = 0;i < length;i++){if (s1[i] == '\\')flag1 = i;if (s1[i] == ' ')flag3 = i;}for (int i = 0;i < length;i++){if (s1[i] == ' '){flag2 = i;break;}}if (flag2 - flag1 < 16){mis[count - 1].truename = s1.substr(flag1 + 1, flag2 - flag1-1);mis[count - 1].num = s1.substr(flag3 + 1, length - flag3);mis[count - 1].showname = s1.substr(flag1 + 1, flag2 - flag1-1);j++;}else{mis[count - 1].truename = s1.substr(flag1 + 1, flag2 - flag1-1);mis[count - 1].num = s1.substr(flag3 + 1, length - flag3);mis[count - 1].showname = s1.substr(flag2 -16, 16);}vec.push_back(mis[count - 1]);for (int i = 0;i < count - 1;i++)if (mis[count - 1].truename == mis[i].truename&&mis[count - 1].num == mis[i].num){vec.push_back(mis[count - 1]);j--;}}for (p = vec.begin();p != vec.end();p++)cout << p->showname<<' '<<p->num<<' ';cout << j << endl;return 0;}

始终无法AC,太晚了,回寝室了,明天继续!

0 0