描述 | |
---|---|
知识点 | 字符串 |
运行时间限制 | 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,太晚了,回寝室了,明天继续!