Advertisement
Guest User

Untitled

a guest
May 19th, 2019
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.58 KB | None | 0 0
  1. //TP 2018/2019: Zadaća 3, Zadatak 2
  2. #include <iostream>
  3. #include <string>
  4. #include <map>
  5. #include <set>
  6. #include <cctype>
  7.  
  8. std::string PretvoriuMala (std::string s) {
  9. for (int i = 0; i < s.size(); i++) {
  10. if (isupper(s.at(i)));
  11. s.at(i)=tolower(s.at(i));
  12. }
  13. return s;
  14. }
  15.  
  16. bool JesteSlovo (char c) {
  17. if(('a' <= c && c <= 'z') || ( 'A' <= c && c <= 'Z') || ('0' <= c && c <= '9'))return true;
  18. return false;
  19. }
  20.  
  21. std::map<std::string, std::set<int>> KreirajIndeksPojmova (std::string s) {
  22.  
  23. /* while (it != s.end()) {
  24. //auto indeks=it;
  25. if(JesteSlovo(*it)) {
  26. // indeks = it;
  27.  
  28. rijec += *it;
  29. it++;
  30. // std::cout << rijec << " ";
  31. }
  32. mapa["rijec"].insert(it - s.begin());
  33. }*/
  34.  
  35. std::map <std::string, std::set<int>> mapa;
  36. auto it = s.begin();
  37. std::string rijec;
  38. while (it != s.end()) {
  39. //if (JesteSlovo(*it)) {
  40. // bool nije_slovo = true;
  41.  
  42. //if (!(JesteSlovo(*it))) nije_slovo = true;
  43.  
  44. //else if (nije_slovo == true) {
  45.  
  46. //nije_slovo = false;
  47. if (JesteSlovo(*it)) {
  48.  
  49. auto iter = it;
  50. while (iter != s.end() && JesteSlovo(*iter)) {
  51. iter++;
  52. }
  53.  
  54. std::string rijec = s.substr(it - s.begin(), iter - it);
  55. mapa[rijec].insert(it - s.begin());
  56. /* if(m.find(rijec) != m.end()){
  57. prevod += m[rijec];
  58. }
  59. else{
  60. prevod += rijec;
  61. }*/
  62.  
  63. it = iter;
  64.  
  65. it--;
  66. }
  67.  
  68.  
  69. it++;
  70. }
  71.  
  72.  
  73. return mapa;
  74. }
  75.  
  76. std::set<int> PretraziIndeksPojmova (std::string rijec, std::map<std::string, std::set<int>> mapa) {
  77. if (!mapa.count(rijec)) {
  78. throw std::logic_error ("Pojam nije nadjen");
  79. }
  80. // std::set<int> set;
  81.  
  82.  
  83. return mapa [rijec];
  84. }
  85.  
  86. void IspisiIndeksPojmova ( std::map<std::string, std::set<int>> mapa) {
  87. auto iter = mapa.begin();
  88. for (iter = mapa.begin(); iter!= mapa.end(); iter ++){
  89.  
  90. std::cout << iter -> first << ": ";
  91. // for (auto x : iter->first) std::cout << x << " ";
  92. auto it = (iter -> second).begin();
  93. // for (auto x : iter -> second) std::cout << x;
  94. for (int i = 0; i < (iter -> second).size(); i++) {
  95. std::cout <<*it;
  96.  
  97. // for (auto x : iter -> second) std::cout << x;
  98.  
  99. if (i < (iter -> second).size()-1) std::cout << ",";
  100. it++;
  101. }
  102. std::cout << std::endl;
  103. }
  104. }
  105.  
  106.  
  107. // auto it = (iter -> second).begin();
  108.  
  109. /* for (int i = 0; i < (iter -> second).size(); i++) {
  110.  
  111. std::cout << *it;
  112. if (i < (iter -> second).size()-1) std::cout << ",";
  113. it++;
  114. }
  115. std::cout << std::endl;
  116. }
  117. }
  118. */
  119. /*for (int x : (iter->second)) std::cout << x << ",";
  120. std::cout << std::endl;
  121. }
  122. }
  123. */
  124. int main ()
  125. {
  126. std::cout << "Unesite tekst: ";
  127. // std::string s {"abc qwe stsda abc abc dhi qwe hrkw dhi"};
  128. std::string tekst;
  129. std::getline (std::cin, tekst);
  130. auto mapa = KreirajIndeksPojmova(tekst);
  131. IspisiIndeksPojmova(mapa);
  132. /*std::cout << "Unesite rijec: ";
  133. std::string rijec;*/
  134. //do {
  135. //std::cin >> rijec;
  136. //if (rijec == ".") return 0;
  137.  
  138. //auto m = PretraziIndeksPojmova(rijec, mapa);
  139. //if (m.empty()) std::cout << "\nUnesena rijec nije nadjena!";
  140. //for(auto it = m.begin(); it!= m.end(); it++) {
  141. // std::cout << *it << " ";
  142. //}
  143. //}
  144. //while (rijec!= ".");
  145. std::set<int> s;
  146. std::string mali;
  147. std::getline(std::cin, mali);
  148. s=PretraziIndeksPojmova(mali, mapa);
  149. for (int x:s) std::cout << x << " ";
  150. return 0;
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement