Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cstdlib>
- #include <fstream>
- #include <list>
- using namespace std;
- struct drzewoKodowe{
- unsigned char ojciec;
- unsigned char potomekLewy;
- unsigned char potomekPrawy;
- } drzewo[512];
- struct modelSort{
- unsigned char slowoKodowe;
- int iloscWystapien;
- long double czestosc;
- };
- modelSort tablica[512] = {0, 0, 0};
- string zmienNazwe(string nazwaPlikuWejscia, string rozszerzenie, ifstream &wskPlik_O, ofstream &wskPlik_Z);
- int czytajModel(string nazwaWe, ifstream &wskO, ofstream &wskZ);
- void sortujCzestoscRosnaco(int iloscSymboli);
- void stworzDrzewo(int iloscSymboli);
- int main(int argc, char* argv[]) {
- string nazwaWe;
- ifstream wskOtworz;
- ofstream wskZamknij;
- int iloscSymboli;
- if(argc<2)
- {
- cout << "Nie podano pliku wejsciowego!" << endl;
- return -1;
- }
- nazwaWe = argv[1];
- iloscSymboli = czytajModel(nazwaWe, wskOtworz, wskZamknij);
- sortujCzestoscRosnaco(iloscSymboli);
- stworzDrzewo(iloscSymboli);
- return 0;
- }
- void sortujCzestoscRosnaco(int iloscSymboli)
- {
- for(int i=0;i<iloscSymboli;i++)
- {
- for(int j=0;j<iloscSymboli-1;j++)
- {
- if(tablica[j].czestosc > tablica[j+1].czestosc)
- {
- swap(tablica[j], tablica[j+1]);
- }
- }
- }
- // for(int i=0;i<38;i++) cout << tablica[i].czestosc << endl;
- }
- void stworzDrzewo(int iloscSymboli) {
- float najmniejszaCzestosc;
- int indeksNajmniejszejCzestosci1 = 0, indeksNajmniejszejCzestosci2 = 0;
- for (int i = 0; i < iloscSymboli; i++) {
- if (tablica[i].czestosc < tablica[i + 1].czestosc) {
- najmniejszaCzestosc = (float) tablica[i].czestosc;
- indeksNajmniejszejCzestosci1 = i;
- indeksNajmniejszejCzestosci2 = indeksNajmniejszejCzestosci1 - 1;
- }
- }
- }
- int czytajModel(string nazwaWe, ifstream &wskO, ofstream &wskZ)
- {
- wskO.open(nazwaWe.c_str());
- if(!wskO.good())
- {
- cout << "Blad otwierania pliku w czytajModel" << endl;
- }
- string ilosc;
- while(wskO)
- {
- for(int i=0;i<512;i++)
- {
- wskO >> tablica[i].slowoKodowe;
- wskO >> tablica[i].iloscWystapien;
- }
- }
- int policz=0;
- long long int calyTekst = 0;
- for(int i=0;i<512;i++)
- {
- calyTekst += tablica[i].iloscWystapien;
- if(tablica[i].iloscWystapien!=0)
- {
- tablica[i].czestosc = (tablica[i].iloscWystapien)/(calyTekst);
- policz++;
- }
- }
- for(int i=0;i<512;i++)
- {
- if(tablica[i].iloscWystapien!=0)
- {
- tablica[i].czestosc = (float)(tablica[i].iloscWystapien)/(calyTekst);
- }
- }
- /*
- for(int i=0;i<512;i++)
- {
- if(tablica[i].iloscWystapien != 0) cout << tablica[i].slowoKodowe << " " << tablica[i].iloscWystapien << " " << tablica[i].czestosc << endl;
- }
- */
- wskO.close();
- return policz;
- }
- 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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement