В общем старался сделать максимально проще и понятно, правда не знаю на сколько это у меня получилось. Программа считывает слова с указанного файла и уже потом проводит все требуемые операции.
| Код | #include <iostream> #include <fstream> #include <vector> #include <string>
using namespace std;
struct TStruct { int count; string str; };
typedef vector<TStruct> TArray;
//----------------------------------------------// int LoadFromFile (TArray &theArr, const char *theFileName) { ifstream f; f.open(theFileName); if (f.fail()) { cout << "Error: can't open file '" << theFileName << "'" << endl; return 1; } string buffStr; while (!f.eof()) { bool find= false; f >> buffStr; for (int i= 0; i < theArr.size(); ++i) if (theArr[i].str == buffStr) { theArr[i].count++; find= true; } if (!find) { TStruct append= {1, buffStr}; theArr.push_back(append); } } f.close(); return 0; } //----------------------------------------------// void SortArray (TArray &theArr) { for (int i= 0; i < theArr.size()-1; ++i) for (int j= i+1; j < theArr.size(); ++j) if (theArr[i].count < theArr[j].count) { TStruct buff= theArr[i]; theArr[i]= theArr[j]; theArr[j]= buff; } } //----------------------------------------------// void PrintArray (const TArray &theArr) { for (int i= 0; i < theArr.size(); ++i) cout << theArr[i].count << "\t" << theArr[i].str << endl; } //----------------------------------------------//
int main (int argc, char **argv) { TArray arr; if (LoadFromFile(arr, "words.txt")) return 1; SortArray(arr); PrintArray(arr); return 0; }
|
Правда, такого военного компилятора у меня нет, но всё должно работать, единственное нужно закоментировать строчку
и при подключении заголовочных файлов везде добавить '.h'
| Код | #include <iostream.h> #include <fstream.h> #include <vector.h> #include <string.h>
|
|