git地址 | https://github.com/ITBuilting/mytestgit |
---|---|
結對成員 | 譚鎔 |
結對成員學號 | 201831061204 |
Fork倉庫的Github項目地址 | https://github.com/ITBuilting/mytestgit |
PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
---|---|---|---|
Planning | 計劃 | 60 | 30 |
· Estimate | · 估計這個任務須要多少時間 | 2400 | 2000 |
Development | 開發 | 800 | 600 |
· Analysis | · 需求分析 (包括學習新技術) | 180 | 150 |
· Design Spec | · 生成設計文檔 | 60 | 60 |
· Design Review | · 設計複審 (和同事審覈設計文檔) | 50 | 60 |
· Coding Standard | · 代碼規範 (爲目前的開發制定合適的規範) | 30 | 30 |
· Design | · 具體設計 | 120 | 100 |
· Coding | · 具體編碼 | 540 | 300 |
· Code Review | · 代碼複審 | 120 | 120 |
· Test | · 測試(自我測試,修改代碼,提交修改) | 240 | 200 |
Reporting | 報告 | 30 | 40 |
· Test Report | · 測試報告 | 30 | 60 |
· Size Measurement | · 計算工做量 | 30 | 40 |
· Postmortem & Process Improvement Plan | · 過後總結, 並提出過程改進計 | 30 | 60 |
合計 | 2320 | 1850 |
實現一個命令行程序,輸入文件名以命令行參數傳入。
git
則會統計input.txt中的如下幾個指標
1.統計文件的字符數:github
2.統計文件的單詞總數,單詞:至少以4個英文字母開頭,跟上字母數字符號,單詞以分隔符分割,不區分大小寫。編程
3.統計文件的有效行數:任何包含非空白字符的行,都須要統計。
函數
4.統計文件中各單詞的出現次數,最終只輸出頻率最高的10個。頻率相同的單詞,優先輸出字典序靠前的單詞。
單元測試
5.按照字典序輸出到文件txt:學習
1.在思考打開文件的讀取的時候,咱們使用了庫函數ftream和map。 ifstream來讀入須要的文件,ofstream來實現結果輸出進文件output.txt中,用fout和fin來實現向文件中進行寫操做和從文件的內容中進行讀操做。
2.使用bool isdigit函數來判斷是不是個十進制數字。
3.使用map的迭代器來遍歷訪問這個文件裏面的元素 ,咱們學習而且使用了許多新函數。
測試
具體代碼:ui
#include "pch.h" #include <fstream> #include <map> #include <string> using namespace std; bool isdigit(char ch) { return (ch >= ' '&&ch <= '9'); } int main(void) { map<string, int> words; //轉int類型 ifstream fin("input.txt");//要統計的文件 ofstream fout("output.txt");//結果存放在output中 //------------ string str; int wordCount = 0; string d; int charCount = 0; //------------ if (!fin || !fout) { exit(1); } while (fin.good()) { fin >> str; words[str]++; } fin.close(); fin.open("input.txt"); while (getline(fin, d)) //以行爲單位讀入文件 charCount += d.size(); //累計字符數 fin.close(); for (map<string, int>::iterator mit = words.begin(); mit != words.end(); ++mit) { if (!isdigit((mit->first)[0])) { fout << "<" << mit->first << ">" << ": " << mit->second << endl; ++wordCount; } } fout << "wordTotal: " << wordCount << endl; // 文件輸出單詞個數 fout << "charTotal: " << charCount << endl; //文件輸出字符個數 fout.close(); return 0; }
運行截圖:
編碼
每寫一部分代碼就會相應的進行必定的審查,在過程當中有不少不明白的地方,就會一塊兒查閱知識,不少知識也是個人結對夥伴教給個人。最後經過討論咱們對讀入字符代碼實現部分進行了改進:統一使用系統庫的有關文件的函數,對代碼量達到了控制,簡便明瞭。spa
咱們一直在遇到問題,也相應的一直在網上查找,咱們因爲第二次做業完成狀況不是很良好,因此在git提交上浪費了不少時間。
整個做業對於我來講難度仍是很大的,遇到了不少問題,可是幸虧個人小夥伴很優秀。也很感謝個人結對小夥伴從頭至尾的幫助。雖然整個做業過程仍是有一點艱辛的,可是也開心從中學到了一些東西,好比文件讀取等,還了解了許多函數,還有關於map的許許多多的東西,之後仍是要多向大佬學習,一點一點的積累知識,嘿嘿。