華為OJ 簡單錯誤記錄模組

2021-07-30 00:24:22 字數 1414 閱讀 3639

開發乙個簡單錯誤記錄功能小模組,能夠記錄出錯的**所在的檔名稱和

行號。要求如下:

1. 記錄最多8條錯誤記錄,對相同的錯誤記錄(即檔名稱和行號完全匹配)

只記錄一條,錯誤計數增加;(檔案所在的目錄不同,檔名和行號相同也要合併)。

2. 超過16個字元的檔名稱,只記錄檔案的最後有效16個字元;(如果

檔名不同,只是檔名的後16個字元和行號相同,也不要合併)。

3. 輸入的檔案可能帶路徑,記錄檔名稱不能帶路徑。

一行或多行字串。每行包括帶路徑檔名稱,行號,以空格隔開。

檔案路徑為windows格式,如:e:\v1r2\product\fpgadrive.c 1325

將所有的記錄統計並將結果輸出,格式:檔名行號出現次數,以乙個空格隔開,

如:fpgadrive.c 1325 1

結果根據數目從多到少排序,數目相同的情況下,按照輸入第一次出現順序排序。

如果超過8條記錄,則只輸出前8條記錄。

很明顯需要乙個容器儲存所有的錯誤記錄,然後對其按照出現數目進行穩定排序,並且只輸出前8條記錄(假設超過8條錯誤記錄)。為了保證每次向容器插入錯誤記錄時,實現插入的錯誤記錄不同且相同記錄進行累計的功能,需要在插入時,比較當前插入的記錄和容器已有的錯誤記錄是否完全相同?(檔名全稱相同且行號相同),因此,這個容器必須具有隨機訪問的能力,此處選擇vector。

#include 

#include

#include

#include

#include

using

namespace

std;

struct errorrecord

;bool compare(const errorrecord& lop, const errorrecord& rop)

int main(int argc, char* argv)

}if (i == errvec.size())

} stable_sort(errvec.begin(), errvec.end(), compare);

int index = ((8 > errvec.size()) ? 8 : errvec.size());

for (int i = 0; i < index; i++)

cout

<< errvec[i].name << " "

<< errvec[i].lineno << " "

<< errvec[i].cnt << endl;

} return

0;}

華為OJ(簡單錯誤記錄)

描述 開發乙個簡單錯誤記錄功能小模組,能夠記錄出錯的 所在的檔名稱和行號。處理 1 記錄最多8條錯誤記錄,迴圈記錄,對相同的錯誤記錄 淨檔名稱和行號完全匹配 只記錄一條,錯誤計數增加 2 超過16個字元的檔名稱,只記錄檔案的最後有效16個字元 3 輸入的檔案可能帶路徑,記錄檔名稱不能帶路徑。知識點字...

華為OJ 簡單錯誤記錄

簡單錯誤記錄 開發乙個簡單錯誤記錄功能小模組,能夠記錄出錯的 所在的檔名稱和行號。處理 1 記錄最多 8條錯誤記錄,迴圈記錄,對相同的錯誤記錄 淨檔名稱和行號完全匹配 只記錄一條,錯誤計數增加 2 超過 16個字元的檔名稱,只記錄檔案的最後有效 16個字元 3 輸入的檔案可能帶路徑,記錄檔名稱不能帶...

華為 簡單錯誤記錄

開發乙個簡單錯誤記錄功能小模組,能夠記錄出錯的 所在的檔名稱和行號。處理 1.記錄最多8條錯誤記錄,對相同的錯誤記錄 即檔名稱和行號完全匹配 只記錄一條,錯誤計數增加 檔案所在的目錄不同,檔名和行號相同也要合併 2.超過16個字元的檔名稱,只記錄檔案的最後有效16個字元 如果檔名不同,而只是檔名的後...