github專案位址
由於程式要求從命令列讀入檔案,所以需要c++輸入輸出流的知識,題目要求得到檔案的字元數,我是逐個字元累計,對於求檔案行數,檔案單詞數,所以我採取按行讀取檔案的字串,每一行再分別統計單詞數的方法。重點就在於檔案流的操作和對字串的操作。我通過網路和書本了解到了相關資料。
從命令列讀入檔案,用ifstream類讀取檔案資訊,用ofstream類寫入檔案。對於得到的字串,用到了vector類,能方便的儲存字串陣列及其相關資訊,題目的關鍵是分割字串,提取其中的單詞,我用到split()方法,但c++標準庫中沒有這個方法,需要自己實現。將單詞的資訊,存放在結構體陣列中,再進行排序,即可得到結果。每個功能模組都獨立為乙個函式,每實現乙個模組,就用單元測試對其測試。
一開始用同結構體陣列儲存單詞的資料,發現靜態的陣列面對大文字時,程式會崩潰,所以改用vector,動態儲存單詞資料。
vector的排序直接用了自帶的快速排序,效率比氣泡排序高。
//對字串用指定的分隔符分割
vectorsplit(const string &s, const string &t) {//s為待處理的字串,t中存放分隔符
vectorresult;//存放產生的字串陣列
typedef string::size_type string_size;
string_size i = 0;
while (i != s.size()) {
//找到字串中首個不等於分隔符的字母;
int flag = 0;
while (i != s.size() && flag == 0) {
flag = 1;
for (string_size x = 0; x 通過第一次的實踐,我發現我的c++基礎太薄弱了,一些檔案流的知識很生疏,知識的拓展也不夠,一些很好的標頭檔案不會使用,好多次**做到後面,發現前面的功能模組實現有問題,思路比較亂,做乙個專案感覺與以往的作業有很大不同之處,不僅要考慮到演算法的實現,能得到正確答案,一些模組的獨立性或**排版布局規劃也需要重視。但是,通過這次實踐,我也學到了很多,比如單元測試和效能測試的方法。通過查詢資料也了解到了c++一些方便的資料結構。總之,這是一次很有意義的實踐作業。
軟工實踐第二次作業
psp2.1 personal software process stages 預估耗時 分鐘 實際耗時 分鐘 planning 計畫50 50 estimate 估計這個任務需要多少時間 1515 development 開發660 600 analysis 需求分析 包括學習新技術 10070 ...
軟工實踐第二次作業
1 字元統計 利用c 輸入輸出流函式逐個讀取字元,判斷字元ascii碼值是否在ascii碼表範圍內,我對字元的輸入輸出流不太了解,剛開始出現了亂碼,讀取字元不完整等情況,所以這方面花費時間很長,下面給出 以作記錄 fstream infile infile.open filename 讀取檔案 if...
軟工實踐2017第二次作業
用回溯法實現的流程圖如下 1.判斷可以放哪些數字 void confirmcandidate int a 9 int i,int j for int line 0 line 9 line for int line i 3 3 line i 3 3 3 line 2.標記每個空格位置 void tot...