Posted By

jajojejeje on 11/21/18


Tagged

lab5aSTLkodzzajec


Versions (?)

lab5a_STL_kod_z_zajec


 / Published in: C++
 

lab5aSTLkodzzajec

  1. #include "pch.h"
  2. #include <iostream>
  3. #include <list>
  4. #include <queue>
  5. #include <fstream>
  6. #include <string>
  7. #include <sstream>
  8.  
  9. using namespace std;
  10.  
  11. class Mikser;
  12. class FunktorSortDlugosciWyrazow;
  13. class FunktorSortRozmiaryKolejek;
  14.  
  15. ostream& operator <<(ostream& os, priority_queue<string, vector<string>, FunktorSortDlugosciWyrazow> kolejka);
  16. priority_queue<string, vector<string>, FunktorSortDlugosciWyrazow> dodajWyrazy(string linia);
  17. bool funkcjaSortRozmiaryKolejek(priority_queue<string> a, priority_queue<string> b);
  18.  
  19. class Mikser : public list<priority_queue<string, vector<string>, FunktorSortDlugosciWyrazow>> {
  20. public:
  21. Mikser() {}
  22. Mikser(string nazwa) { open(nazwa); }
  23. ~Mikser() { clear(); }
  24. void open(string nazwa);
  25. void execute();
  26. void write(string nazwa);
  27. };
  28.  
  29. class FunktorSortDlugosciWyrazow {
  30. public:
  31. bool operator()(string a, string b) {
  32. if (a.size() > b.size()) {
  33. return true;
  34. }
  35. else {
  36. return false;
  37. }
  38. }
  39. };
  40.  
  41. class FunktorSortRozmiaryKolejek {
  42. public:
  43. bool operator()(priority_queue<string, vector<string>, FunktorSortDlugosciWyrazow> a, priority_queue<string, vector<string>, FunktorSortDlugosciWyrazow> b) {
  44. if (a.size() > b.size()) {
  45. return true;
  46. }
  47. else {
  48. return false;
  49. }
  50. }
  51. };
  52.  
  53. bool funkcjaSortRozmiaryKolejek(priority_queue<string, vector<string>, FunktorSortDlugosciWyrazow> a, priority_queue<string, vector<string>, FunktorSortDlugosciWyrazow> b) {
  54. if (a.size() > b.size()) {
  55. return true;
  56. }
  57. else {
  58. return false;
  59. }
  60. }
  61.  
  62. ostream& operator <<(ostream& os, priority_queue<string, vector<string>, FunktorSortDlugosciWyrazow> kolejka) {
  63. os << kolejka.size() << ": ";
  64. while (!kolejka.empty()) {
  65. os << kolejka.top() << " ";
  66. kolejka.pop();
  67. }
  68. os << endl;
  69. return os;
  70. }
  71.  
  72. void Mikser::open(string nazwa) {
  73. fstream plik;
  74. plik.open(nazwa);
  75. string linia;
  76. while (getline(plik, linia)) {
  77. if (linia.size() == 0) continue;
  78. priority_queue<string, vector<string>, FunktorSortDlugosciWyrazow> kolejka = dodajWyrazy(linia);
  79. push_front(kolejka);
  80.  
  81. }
  82. plik.close();
  83. }
  84.  
  85. void Mikser::execute() {
  86. FunktorSortRozmiaryKolejek fo;
  87. sort(fo);
  88. }
  89.  
  90. void Mikser::write(string nazwa) {
  91. ofstream plik;
  92. plik.open(nazwa);
  93. for (Mikser::iterator i = begin(); i != end(); i++) {
  94. plik << (*i);
  95. }
  96. plik.close();
  97. }
  98.  
  99.  
  100. priority_queue<string,vector<string>,FunktorSortDlugosciWyrazow> dodajWyrazy2(string linia) {
  101. string tekst = "";
  102. priority_queue<string, vector<string>, FunktorSortDlugosciWyrazow> kolejka;
  103. for (int i = 0; i < linia.size(); i++) {
  104. string litera = "a";
  105. litera[0] = linia[i];
  106. if (litera == " ") {
  107. kolejka.push(tekst);
  108. tekst = "";
  109. }
  110. else {
  111. tekst.append(litera);
  112. }
  113. }
  114. return kolejka;
  115. }
  116.  
  117. priority_queue<string, vector<string>, FunktorSortDlugosciWyrazow> dodajWyrazy(string linia) {
  118. string tekst = "";
  119. priority_queue<string, vector<string>, FunktorSortDlugosciWyrazow> kolejka;
  120. string slowo;
  121. std::istringstream iss(linia);
  122. while (iss >> slowo)
  123. {
  124. kolejka.push(slowo);
  125. }
  126. return kolejka;
  127. }
  128.  
  129. int main() {
  130. Mikser mikser("mistrz.txt");
  131. mikser.execute();
  132. mikser.write("mistrz2.txt");
  133.  
  134.  
  135. return 0;
  136. }

Report this snippet  

You need to login to post a comment.