标签:data ota set out 最好 string strcmp cto getch
#include <iostream> #include <cstdio> #include <fstream> #include <string> #include <vector> #include <map> #include <cctype> #include <cstring> #include <io.h> #include <algorithm> #include <utility> #include <iomanip> using namespace std; typedef pair<string, int> PAIR; struct CmpByValue { bool operator()(const PAIR& lhs, const PAIR& rhs) { return lhs.second > rhs.second; } }; void console_get_name(); void display_map(map<string,int> &wmap); void file_get_map(string Arg); void file_txt_get_map(char* A); void console_get_single(); void file_info_get_map(char* fileinfo); void one_backslash_become_two_backslash(char* Path); int main(int argc ,char** argv) {ios::sync_with_stdio(false); if(argc==1) console_get_single(); if(argc==3) { string arg=argv[2]; file_get_map(arg); } char a[200]="",b[20]="*.txt",c[20]="\\",d[20]="-s"; if(strcmp(d,argv[1])==0) { console_get_single(); return 0; } char buf[80]; getcwd(buf,sizeof(buf)); strcat(a,buf); strcat(a,c); strcat(a,argv[1]); strcat(a,c); strcat(a,b); //printf("%s\n",argv[0]); one_backslash_become_two_backslash(a); // strcat(a,b); //printf("%s\n",a); long Handle; struct _finddata_t FileInfo; if((Handle=_findfirst(a,&FileInfo))==-1L) { char aa[200]; strcpy(aa,argv[1]); file_txt_get_map(aa); } else { file_info_get_map(FileInfo.name); while(_findnext(Handle,&FileInfo)==0) file_info_get_map(FileInfo.name); _findclose(Handle); } // get_map(); return 0; } void display_map(map<string,int> &wmap) { map<string,int>::const_iterator map_it; int tot=0; for(map_it=wmap.begin(); map_it != wmap.end(); map_it ++) tot++; cout<<"total "<<tot<<endl; // for(map_it=wmap.begin(); map_it != wmap.end(); map_it ++) // { // cout << map_it->first <<" "<< map_it->second << endl; // } vector<PAIR> name_number_vec(wmap.begin(), wmap.end()); sort(name_number_vec.begin(), name_number_vec.end(), CmpByValue()); // sort(name_score_vec.begin(), name_score_vec.end(), cmp_by_value); for (int i = 0; i != name_number_vec.size(); ++i) { if(i>9) break; cout <<setw(10)<<name_number_vec[i].first<<setw(6)<<name_number_vec[i].second<< endl; } } void file_txt_get_map(char* A) { string filename; filename=A; //cin.get(); filename+=".txt"; ifstream fin(filename.c_str()); // read in str[] string temp; map<string,int> wmap; while(fin>>temp) { int len=temp.size(); char tmp[20]=""; int j=0; for(int i=0; i<len; i++) { if (isalpha(temp[i])) { tmp[j]=temp[i]; j++; } } string tmp2(tmp); wmap[tmp2]++; } display_map(wmap); fin.close(); //cin.get(); } void file_get_map(string Arg) { string filename; filename=Arg; // cin.get(); ifstream fin(filename.c_str()); // read in str[] string temp; map<string,int> wmap; while(fin>>temp) { int len=temp.size(); char tmp[20]=""; int j=0; for(int i=0; i<len; i++) { if (isalpha(temp[i])) { tmp[j]=temp[i]; j++; } } string tmp2(tmp); wmap[tmp2]++; } display_map(wmap); fin.close(); //cin.get(); } void console_get_single() { string temp; map<string,int> wmap; while(cin>>temp) { int len=temp.size(); char tmp[20]=""; int j=0; for(int i=0; i<len; i++) { if (isalpha(temp[i])) { tmp[j]=temp[i]; j++; } } string tmp2(tmp); wmap[tmp2]++; if (getchar()==‘\n‘) break; } display_map(wmap); //cin.get(); } /*void console_get_name() { string filename; cin>>filename; //cin.get(); filename+=".txt"; ifstream fin(filename.c_str()); // read in str[] string temp; map<string,int> wmap; while(fin>>temp) { int len=temp.size(); char tmp[20]=""; int j=0; for(int i=0; i<len; i++) { if (isalpha(temp[i])) { tmp[j]=temp[i]; j++; } } string tmp2(tmp); wmap[tmp2]++; } display_map(wmap); fin.close(); // cin.get(); }*/ void one_backslash_become_two_backslash(char* Path) { int len=strlen(Path); char Path2[100]; for(int i=0,j=0; i<len; i++) { if(Path[i]==‘\\‘) { Path2[j++]=‘\\‘; Path2[j++]=‘\\‘; } else Path2[j++]=Path[i]; } strcpy(Path2,Path); } void file_info_get_map(char* fileinfo) { string filename=fileinfo; // cin >> filename; // cin.get(); ifstream fin(filename.c_str()); // read in str[] string temp; map<string,int> wmap; while(fin>>temp) { int len=temp.size(); char tmp[20]=""; int j=0; for(int i=0; i<len; i++) { if (isalpha(temp[i])) { tmp[j]=temp[i]; j++; } } string tmp2(tmp); wmap[tmp2]++; } display_map(wmap); fin.close(); // cin.get(); }
排序输出前十个怎么实现:把map里面的拿到vecror里,vector可以sort,参考了链接http://blog.csdn.net/iicy266/article/details/11906189
输出格式控制怎么实现:cout可以setw(x),其中x是你想要的宽度。例:
cout <<setw(10)<<name_number_vec[i].first<<setw(6)<<name_number_vec[i].second<< endl;
单词设成宽度10了,因为:尽管有长度比10个字母长的单词,不过出现频率最高的单词不太可能是它们。
数字设成6,因为五位数已经挺大了,可以表示到99999。
本来可以早一些完成,拿一个很高的分,不过当时懒了,懒了就是懒了。就像上周到的哑铃和球过了这么久也只玩了一次一样。种下一棵树最好的时间是十年前,其次是今天。
让我们开始种大树吧!
标签:data ota set out 最好 string strcmp cto getch
原文地址:http://www.cnblogs.com/gaoyb348/p/7587544.html