- [必做 2] 读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率。
- 命令行格式: 提示符> Myapp.exe -f filename.txt -w word (PS:C++ 程序,Java 程序输出方式类似)
- 解释:
- 选项 -f 表示打开某一文件(filename.txt)
- 选项 -w 表示统计其后单词(word)在打开的文件(filename.txt)中的频率
结对伙伴:陈晖,博客地址:http://www.cnblogs.com/cchenhui
Github:https://github.com/cchenhui/-4
贡献比例:1:1
源程序:
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 #include <string> 5 #include <fstream> 6 using namespace std; 7 8 struct WORD 9 { 10 string word; 11 int num; 12 }; 13 14 vector<WORD> a; //创建vector对象,a[] 15 16 int&value(const string&s) 17 { 18 for(int i=0;i<a.size();i++) 19 if(s==a[i].word) 20 return a[i].num; 21 WORD p; 22 p.word=s; 23 p.num=0; 24 a.push_back(p); //在数组a最后添加数据 25 return a[a.size()-1].num; 26 } 27 28 int main() 29 { 30 string str; 31 cout << "输入字符串:\n"; 32 char c; 33 while(c=cin.get()) 34 { 35 if((c>='a' && c<='z') || (c>='A' && c<='Z') || c==' ' || c=='\n') 36 str+=c; //去除符号 37 if(c=='\n') 38 break; 39 } 40 //输出去掉非英文字符的字符串 41 42 43 for(int j=0;str[j]!='\0';j++) 44 { 45 if(str[j]>='A'&&str[j]<='Z') 46 { 47 str[j]+= 32; //大写字母Ascll码+32转换为小写 48 } 49 } 50 //输出转换为小写的字符串 51 52 string buf; 53 ofstream fout("D:\123.txt"); //把转换好的字符串写入文件 54 fout<<str; 55 fout.close (); 56 ifstream fin("D:\123.txt"); //读出写入的字符串并排序 57 cout<<"输入统计单词:"; 58 char m; 59 cin>>m; //待统计单词m 60 int total=0; 61 if(!strcmp(p,m)) 62 { 63 total++; 64 } 65 while(fin>>buf) 66 { 67 value(buf)++; 68 } 69 vector<WORD>::const_iterator p; //迭代器访问元素 70 for(p=a.begin();p!=a.end();++p) 71 cout<<p->word<<":"<<p->num<<'\n'; 72 return 0; 73 }
总结:
这次的结对编程比起上一次来要顺利了很多,因为通过上一次的结对,让我们变得默契了很多。
我觉得结对编程实在值得推荐,【感觉自己说了不止一遍了。
至于好处,相信合作过的人都知道。