Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cstdlib>
  4. #include <fstream>
  5. #include <list>
  6.  
  7. using namespace std;
  8.  
  9. struct drzewoKodowe{
  10. unsigned char ojciec;
  11. unsigned char potomekLewy;
  12. unsigned char potomekPrawy;
  13.  
  14. } drzewo[512];
  15.  
  16. struct modelSort{
  17. unsigned char slowoKodowe;
  18. int iloscWystapien;
  19. long double czestosc;
  20.  
  21. };
  22.  
  23. modelSort tablica[512] = {0, 0, 0};
  24.  
  25. string zmienNazwe(string nazwaPlikuWejscia, string rozszerzenie, ifstream &wskPlik_O, ofstream &wskPlik_Z);
  26. int czytajModel(string nazwaWe, ifstream &wskO, ofstream &wskZ);
  27. void sortujCzestoscRosnaco(int iloscSymboli);
  28. void stworzDrzewo(int iloscSymboli);
  29.  
  30. int main(int argc, char* argv[]) {
  31.  
  32. string nazwaWe;
  33. ifstream wskOtworz;
  34. ofstream wskZamknij;
  35. int iloscSymboli;
  36.  
  37. if(argc<2)
  38. {
  39. cout << "Nie podano pliku wejsciowego!" << endl;
  40. return -1;
  41. }
  42. nazwaWe = argv[1];
  43.  
  44. iloscSymboli = czytajModel(nazwaWe, wskOtworz, wskZamknij);
  45. sortujCzestoscRosnaco(iloscSymboli);
  46. stworzDrzewo(iloscSymboli);
  47.  
  48.  
  49. return 0;
  50. }
  51. void sortujCzestoscRosnaco(int iloscSymboli)
  52. {
  53.  
  54. for(int i=0;i<iloscSymboli;i++)
  55. {
  56. for(int j=0;j<iloscSymboli-1;j++)
  57. {
  58. if(tablica[j].czestosc > tablica[j+1].czestosc)
  59. {
  60. swap(tablica[j], tablica[j+1]);
  61. }
  62. }
  63. }
  64. // for(int i=0;i<38;i++) cout << tablica[i].czestosc << endl;
  65. }
  66.  
  67. void stworzDrzewo(int iloscSymboli) {
  68. float najmniejszaCzestosc;
  69. int indeksNajmniejszejCzestosci1 = 0, indeksNajmniejszejCzestosci2 = 0;
  70. for (int i = 0; i < iloscSymboli; i++) {
  71. if (tablica[i].czestosc < tablica[i + 1].czestosc) {
  72.  
  73. najmniejszaCzestosc = (float) tablica[i].czestosc;
  74.  
  75. indeksNajmniejszejCzestosci1 = i;
  76. indeksNajmniejszejCzestosci2 = indeksNajmniejszejCzestosci1 - 1;
  77. }
  78. }
  79.  
  80.  
  81. }
  82.  
  83.  
  84. int czytajModel(string nazwaWe, ifstream &wskO, ofstream &wskZ)
  85. {
  86.  
  87. wskO.open(nazwaWe.c_str());
  88.  
  89. if(!wskO.good())
  90. {
  91. cout << "Blad otwierania pliku w czytajModel" << endl;
  92. }
  93. string ilosc;
  94. while(wskO)
  95. {
  96.  
  97. for(int i=0;i<512;i++)
  98. {
  99. wskO >> tablica[i].slowoKodowe;
  100. wskO >> tablica[i].iloscWystapien;
  101. }
  102. }
  103. int policz=0;
  104. long long int calyTekst = 0;
  105.  
  106. for(int i=0;i<512;i++)
  107. {
  108. calyTekst += tablica[i].iloscWystapien;
  109.  
  110. if(tablica[i].iloscWystapien!=0)
  111. {
  112. tablica[i].czestosc = (tablica[i].iloscWystapien)/(calyTekst);
  113. policz++;
  114. }
  115.  
  116.  
  117. }
  118. for(int i=0;i<512;i++)
  119. {
  120. if(tablica[i].iloscWystapien!=0)
  121. {
  122. tablica[i].czestosc = (float)(tablica[i].iloscWystapien)/(calyTekst);
  123.  
  124. }
  125.  
  126. }
  127. /*
  128. for(int i=0;i<512;i++)
  129. {
  130. if(tablica[i].iloscWystapien != 0) cout << tablica[i].slowoKodowe << " " << tablica[i].iloscWystapien << " " << tablica[i].czestosc << endl;
  131. }
  132. */
  133. wskO.close();
  134.  
  135. return policz;
  136. }
  137.  
  138. string zmienNazwe(string nazwaPlikuWejscia, string rozszerzenie, ifstream &wskPlik_O, ofstream &wskPlik_Z)
  139. {
  140. string nazwaPlikuWyjscia;
  141. nazwaPlikuWyjscia = nazwaPlikuWejscia.substr(0,nazwaPlikuWejscia.find_last_of(".")) + rozszerzenie;
  142. return nazwaPlikuWyjscia;
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement