C++ファーウェイ筆記試験問題:エラーコードが存在するファイル名と行番号を記録できる簡単なエラー記録機能モジュールを開発した.
1975 ワード
リンク:https://www.nowcoder.com/questionTerminal/67df1d7889cf4c529576383c2e647c48
出典:牛客網
この問題にはいくつかの文字列の検索/検索位置/substr切り取りサブ列/compareの定義、vector>定義、および使用方法、getline入力/make_pairなどの方法.
メモして、忘れないように!
エラーコードが存在するファイル名と行番号を記録できる簡単なエラー記録機能モジュールを開発します.
処理:
1.最大8件のエラー記録を記録し、同じエラー記録(つまりファイル名と行番号が完全に一致する)に対して1件だけ記録し、エラーカウントが増加する.(ファイルが存在するディレクトリが異なり、ファイル名と行番号が同じでもマージされます)
2.16文字を超えるファイル名は、ファイルの最後に有効な16文字のみを記録する.(ファイル名が異なる場合、ファイル名の後ろの16文字と行番号だけが同じ場合は、マージしないでください)
3.入力したファイルにパスがある可能性があり、記録ファイル名にパスがない
説明を入力:
出力の説明:
例1
入力
しゅつりょく
出典:牛客網
この問題にはいくつかの文字列の検索/検索位置/substr切り取りサブ列/compareの定義、vector>定義、および使用方法、getline入力/make_pairなどの方法.
メモして、忘れないように!
エラーコードが存在するファイル名と行番号を記録できる簡単なエラー記録機能モジュールを開発します.
処理:
1.最大8件のエラー記録を記録し、同じエラー記録(つまりファイル名と行番号が完全に一致する)に対して1件だけ記録し、エラーカウントが増加する.(ファイルが存在するディレクトリが異なり、ファイル名と行番号が同じでもマージされます)
2.16文字を超えるファイル名は、ファイルの最後に有効な16文字のみを記録する.(ファイル名が異なる場合、ファイル名の後ろの16文字と行番号だけが同じ場合は、マージしないでください)
3.入力したファイルにパスがある可能性があり、記録ファイル名にパスがない
説明を入力:
。 , , 。
windows
:E:\V1R2\product\fpgadrive.c 1325
出力の説明:
, : , , : fpgadrive.c 1325 1
, , 。
8 , 8 .
16 , 16
例1
入力
E:\V1R2\product\fpgadrive.c 1325
しゅつりょく
fpgadrive.c 1325 1
#include
#include
#include
#include
using namespace std;
//
bool compare(pair a, pair b){
return a.second > b.second;
}
int main(void){
string input, file;
vector> errors;
while (getline(cin, input)){
if (input.size() == 0)
break;
unsigned int f = input.rfind('\\');
file = input.substr(f + 1);
errors.push_back(make_pair(file, 1));
for (int i = 0; i16)
errors[idx].first.erase(0, t - 16);
cout << errors[idx].first << ' ' << errors[idx].second << endl;
idx++;
}
}