Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.03 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cstdlib>
  4. #include <fstream>
  5.  
  6. using namespace std;
  7.  
  8. int ZmPolicz = 0;
  9.  
  10. struct strukturaWystapien {
  11. unsigned char slowoKodowe;
  12. int iloscWystapien;
  13. };
  14.  
  15. strukturaWystapien korzenie[512] = {0, 0};
  16.  
  17. string zmienNazwe(string nazwaPlikuWejscia, string rozszerzenie, ifstream &wskPlik_O, ofstream &wskPlik_Z);
  18. void policzWystapienia(string nazwaPlikuWejscia, ifstream &wskPlik_O, ofstream &wskPlik_Z);
  19. void sortujWystapienia(string nazwaPlikuWejscia, ifstream &wskPlik_O, ofstream &wskPlik_Z);
  20.  
  21.  
  22. int main(int argc, char* argv[]) {
  23.  
  24. string nazwaPlikuWejscia;
  25. ifstream wskPlik_O;
  26. ofstream wskPlik_Z;
  27.  
  28. if(argc<2)
  29. {
  30. cout << "Nie podano nazwy pliku jako parametru wejscia!" << endl;
  31. return -1;
  32. }
  33. nazwaPlikuWejscia = argv[1];
  34.  
  35. policzWystapienia(nazwaPlikuWejscia, wskPlik_O, wskPlik_Z);
  36. sortujWystapienia(nazwaPlikuWejscia, wskPlik_O, wskPlik_Z);
  37.  
  38.  
  39. return 0;
  40. }
  41. string zmienNazwe(string nazwaPlikuWejscia, string rozszerzenie, ifstream &wskPlik_O, ofstream &wskPlik_Z)
  42. {
  43. string nazwaPlikuWyjscia;
  44. nazwaPlikuWyjscia = nazwaPlikuWejscia.substr(0,nazwaPlikuWejscia.find_last_of(".")) + rozszerzenie;
  45. return nazwaPlikuWyjscia;
  46. }
  47. void policzWystapienia(string nazwaPlikuWejscia, ifstream &wskPlik_O, ofstream &wskPlik_Z)
  48. {
  49. string roz = "_pokaz.licz";
  50. string nowaNazwaPliku;
  51. unsigned char slowoKodowe;
  52.  
  53. wskPlik_O.open(nazwaPlikuWejscia.c_str(), ios::binary);
  54. if(!wskPlik_O.is_open()) cout << "Blad otwierania pliku w policzWystapienia";
  55.  
  56. while(wskPlik_O)
  57. {
  58.  
  59. slowoKodowe = wskPlik_O.get();
  60.  
  61. if(!wskPlik_O.good()) break;
  62.  
  63. for(ZmPolicz=0;ZmPolicz<512;ZmPolicz++)
  64. {
  65. if(korzenie[ZmPolicz].slowoKodowe == slowoKodowe)
  66. {
  67. korzenie[ZmPolicz].iloscWystapien++;
  68. break;
  69. }
  70.  
  71. }
  72. if(ZmPolicz == 512)
  73. {
  74. for(ZmPolicz = 0; ZmPolicz < 512; ZmPolicz++)
  75. {
  76.  
  77. if(korzenie[ZmPolicz].slowoKodowe == 0)
  78. {
  79. korzenie[ZmPolicz].slowoKodowe = slowoKodowe;
  80. korzenie[ZmPolicz].iloscWystapien = 1;
  81. break;
  82. }
  83.  
  84. }
  85.  
  86. }
  87.  
  88.  
  89. }
  90. wskPlik_O.close();
  91.  
  92.  
  93. nowaNazwaPliku = zmienNazwe(nazwaPlikuWejscia, roz, wskPlik_O, wskPlik_Z);
  94.  
  95. wskPlik_Z.open(nowaNazwaPliku.c_str());
  96.  
  97. if(!wskPlik_Z.is_open()) cout << "Blad otwarcia pliku zapisu w policzWystapienia" << endl;
  98.  
  99. for(ZmPolicz = 0;ZmPolicz < 512; ZmPolicz++)
  100. {
  101. if(korzenie[ZmPolicz].slowoKodowe != 0)
  102. {
  103. wskPlik_Z << korzenie[ZmPolicz].slowoKodowe << " " << korzenie[ZmPolicz].iloscWystapien << endl;
  104. }
  105.  
  106. }
  107. wskPlik_Z.close();
  108. }
  109. void sortujWystapienia(string nazwaPlikuWejscia, ifstream &wskPlik_O, ofstream &wskPlik_Z)
  110. {
  111. string nowaNazwaPliku;
  112. string roz = ".modelsort";
  113. int _temp = 0;
  114. unsigned char _tempc = 0;
  115.  
  116. for(int i=0;i<512;i++)
  117. {
  118. for(int j=0;j<512-i;j++)
  119. {
  120. if(korzenie[j].iloscWystapien > korzenie[j+1].iloscWystapien)
  121. {
  122. _temp = korzenie[j+1].iloscWystapien;
  123. _tempc = korzenie[j+1].slowoKodowe;
  124. korzenie[j+1].iloscWystapien = korzenie[j].iloscWystapien;
  125. korzenie[j+1].slowoKodowe = korzenie[j].slowoKodowe;
  126. korzenie[j].iloscWystapien = _temp;
  127. korzenie[j].slowoKodowe = _tempc;
  128. }
  129. }
  130. }
  131.  
  132. for(int i =0;i<512;i++) {
  133. if(korzenie[i].slowoKodowe!=0)cout << korzenie[i].iloscWystapien;
  134. }
  135.  
  136.  
  137. nowaNazwaPliku = zmienNazwe(nazwaPlikuWejscia, roz, wskPlik_O, wskPlik_Z);
  138.  
  139. wskPlik_Z.open(nowaNazwaPliku.c_str());
  140.  
  141. for(int i = 0; i < 512; i++)
  142. {
  143. if(korzenie[i].slowoKodowe != 0) wskPlik_Z << korzenie[i].slowoKodowe << " " << korzenie[i].iloscWystapien << endl;
  144. }
  145.  
  146. wskPlik_Z.close();
  147.  
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement