Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cstdlib>
- #include <fstream>
- using namespace std;
- int ZmPolicz = 0;
- struct strukturaWystapien {
- unsigned char slowoKodowe;
- int iloscWystapien;
- };
- strukturaWystapien korzenie[512] = {0, 0};
- string zmienNazwe(string nazwaPlikuWejscia, string rozszerzenie, ifstream &wskPlik_O, ofstream &wskPlik_Z);
- void policzWystapienia(string nazwaPlikuWejscia, ifstream &wskPlik_O, ofstream &wskPlik_Z);
- void sortujWystapienia(string nazwaPlikuWejscia, ifstream &wskPlik_O, ofstream &wskPlik_Z);
- int main(int argc, char* argv[]) {
- string nazwaPlikuWejscia;
- ifstream wskPlik_O;
- ofstream wskPlik_Z;
- if(argc<2)
- {
- cout << "Nie podano nazwy pliku jako parametru wejscia!" << endl;
- return -1;
- }
- nazwaPlikuWejscia = argv[1];
- policzWystapienia(nazwaPlikuWejscia, wskPlik_O, wskPlik_Z);
- sortujWystapienia(nazwaPlikuWejscia, wskPlik_O, wskPlik_Z);
- return 0;
- }
- string zmienNazwe(string nazwaPlikuWejscia, string rozszerzenie, ifstream &wskPlik_O, ofstream &wskPlik_Z)
- {
- string nazwaPlikuWyjscia;
- nazwaPlikuWyjscia = nazwaPlikuWejscia.substr(0,nazwaPlikuWejscia.find_last_of(".")) + rozszerzenie;
- return nazwaPlikuWyjscia;
- }
- void policzWystapienia(string nazwaPlikuWejscia, ifstream &wskPlik_O, ofstream &wskPlik_Z)
- {
- string roz = "_pokaz.licz";
- string nowaNazwaPliku;
- unsigned char slowoKodowe;
- wskPlik_O.open(nazwaPlikuWejscia.c_str(), ios::binary);
- if(!wskPlik_O.is_open()) cout << "Blad otwierania pliku w policzWystapienia";
- while(wskPlik_O)
- {
- slowoKodowe = wskPlik_O.get();
- if(!wskPlik_O.good()) break;
- for(ZmPolicz=0;ZmPolicz<512;ZmPolicz++)
- {
- if(korzenie[ZmPolicz].slowoKodowe == slowoKodowe)
- {
- korzenie[ZmPolicz].iloscWystapien++;
- break;
- }
- }
- if(ZmPolicz == 512)
- {
- for(ZmPolicz = 0; ZmPolicz < 512; ZmPolicz++)
- {
- if(korzenie[ZmPolicz].slowoKodowe == 0)
- {
- korzenie[ZmPolicz].slowoKodowe = slowoKodowe;
- korzenie[ZmPolicz].iloscWystapien = 1;
- break;
- }
- }
- }
- }
- wskPlik_O.close();
- nowaNazwaPliku = zmienNazwe(nazwaPlikuWejscia, roz, wskPlik_O, wskPlik_Z);
- wskPlik_Z.open(nowaNazwaPliku.c_str());
- if(!wskPlik_Z.is_open()) cout << "Blad otwarcia pliku zapisu w policzWystapienia" << endl;
- for(ZmPolicz = 0;ZmPolicz < 512; ZmPolicz++)
- {
- if(korzenie[ZmPolicz].slowoKodowe != 0)
- {
- wskPlik_Z << korzenie[ZmPolicz].slowoKodowe << " " << korzenie[ZmPolicz].iloscWystapien << endl;
- }
- }
- wskPlik_Z.close();
- }
- void sortujWystapienia(string nazwaPlikuWejscia, ifstream &wskPlik_O, ofstream &wskPlik_Z)
- {
- string nowaNazwaPliku;
- string roz = ".modelsort";
- int _temp = 0;
- unsigned char _tempc = 0;
- for(int i=0;i<512;i++)
- {
- for(int j=0;j<512-i;j++)
- {
- if(korzenie[j].iloscWystapien > korzenie[j+1].iloscWystapien)
- {
- _temp = korzenie[j+1].iloscWystapien;
- _tempc = korzenie[j+1].slowoKodowe;
- korzenie[j+1].iloscWystapien = korzenie[j].iloscWystapien;
- korzenie[j+1].slowoKodowe = korzenie[j].slowoKodowe;
- korzenie[j].iloscWystapien = _temp;
- korzenie[j].slowoKodowe = _tempc;
- }
- }
- }
- for(int i =0;i<512;i++) {
- if(korzenie[i].slowoKodowe!=0)cout << korzenie[i].iloscWystapien;
- }
- nowaNazwaPliku = zmienNazwe(nazwaPlikuWejscia, roz, wskPlik_O, wskPlik_Z);
- wskPlik_Z.open(nowaNazwaPliku.c_str());
- for(int i = 0; i < 512; i++)
- {
- if(korzenie[i].slowoKodowe != 0) wskPlik_Z << korzenie[i].slowoKodowe << " " << korzenie[i].iloscWystapien << endl;
- }
- wskPlik_Z.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement