Advertisement
Guest User

Untitled

a guest
May 20th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.77 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <list>
  5. #include <set>
  6. bool JelOk(char s)
  7. {
  8. if (s>='0' && s<='9' || s>='A' && s<='Z'|| s>='a' && s<='z') return true; //provjerava jel slovo i cifra
  9. return false;
  10. }
  11. std::vector<std::set<std::string>> Razvrstavanje (std::vector<std::string> imena, int broj_timova)
  12. {
  13. if (broj_timova<1 || broj_timova>imena.size()) throw std::logic_error("Razvrstavanje nemoguce");
  14. std::vector<std::set<std::string>> vektor_skupova;
  15. int vel=imena.size(), koliko(0), kolicina; // broj djece, koliko +1, kolicina djece u normalnim
  16. kolicina=vel/broj_timova;
  17. if (vel%broj_timova!=0) koliko=vel%broj_timova;
  18. std::list<std::string> lista; //lista koju moram koristiti
  19. for (auto it=imena.begin(); it!=imena.end(); it++) lista.push_back(*it); //umecem u listu
  20. auto it=lista.begin();
  21. int provjera(0); //sluzi da vidi jesam li popunila sve timove iskr
  22. while (provjera!=broj_timova) {
  23. std::set<std::string> skup;
  24. if (koliko==0) {
  25. for (int k=0; k<kolicina; k++) {
  26. int br(0), brojac(0);
  27. for (int i=0; i<(*it).length(); i++) if (JelOk((*it).at(i))) br++;
  28. skup.insert(*it);
  29. it=lista.erase(it);
  30. while (brojac!=br) {
  31. it++;
  32. if (it==lista.end()) it=lista.begin();
  33. brojac++;
  34. }
  35. }
  36. vektor_skupova.push_back(skup);
  37. skup.clear();
  38. provjera++;
  39. } else {
  40. for (int j=0; j<koliko; j++) {
  41. for (int k=0; k<kolicina+1; k++) {
  42. int br(0), brojac(0);
  43. for (int i=0; i<(*it).length(); i++) if (JelOk((*it).at(i))) br++;
  44. skup.insert(*it);
  45. it=lista.erase(it);
  46. while (brojac!=br) {
  47. it++;
  48. if (it==lista.end()) it=lista.begin();
  49. brojac++;
  50. }
  51. }
  52. vektor_skupova.push_back(skup);
  53. skup.clear();
  54. provjera++;
  55. }
  56. for (int k=0; k<kolicina; k++) {
  57. int br(0), brojac(0);
  58. for (int i=0; i<(*it).length(); i++) if (JelOk((*it).at(i))) br++;
  59. skup.insert(*it);
  60. it=lista.erase(it);
  61. while (brojac!=br) {
  62. it++;
  63. if (it==lista.end()) it=lista.begin();
  64. brojac++;
  65. }
  66. }
  67. vektor_skupova.push_back(skup);
  68. skup.clear();
  69. provjera++;
  70. }
  71. }
  72. return vektor_skupova;
  73. }
  74. int main ()
  75. {
  76. try {
  77. std::vector<std::string> djeca;
  78. int broj_djece, broj_timova;
  79. std::cout << "Unesite broj djece: ";
  80. std::cin >> broj_djece;
  81. std::cin.ignore(10000, '\n');
  82. std::cout << "Unesite imena djece: ";
  83. for (int i=0; i<broj_djece; i++) {
  84. std::string rijec;
  85. std::getline(std::cin, rijec);
  86. djeca.push_back(rijec);
  87. }
  88. std::cout << "\nUnesite broj timova: ";
  89. std::cin >> broj_timova;
  90. auto timovi=Razvrstavanje(djeca, broj_timova);
  91. for (int i=0; i<broj_timova; i++) {
  92. std::cout << "Tim " << i+1 << ": ";
  93. int br(0);
  94. for (auto s:timovi.at(i)) {
  95. if (br==timovi.at(i).size()-1) std::cout << s;
  96. else std::cout << s << ", ";
  97. br++;
  98. }
  99. std::cout << std::endl;
  100. }
  101. } catch (std::logic_error e) {
  102. std::cout << "Izuzetak: " << e.what();
  103. }
  104. return 0;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement