您的位置:首页 > 其它

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

2016-09-08 22:47 183 查看
描述
开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。 处理:  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,太晚了,回寝室了,明天继续!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: