SHARE
TWEET

Untitled

a guest May 19th, 2019 60 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //TP 2018/2019: Zadaća 3, Zadatak 4
  2. #include <iostream>
  3. #include <string>
  4. #include <vector>
  5. #include <set>
  6. #include <list>
  7.  
  8. bool JesteSlovo (char c) {
  9.     if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '1' && c <= '9')) return true;
  10.     return false;
  11. }
  12. int DuzinaJednogStringa (std::string s) {
  13.     int br_slova = 0;
  14.     for (int i = 0; i < s.size(); i++) {
  15.         if (JesteSlovo(s[i])) br_slova++;
  16.     }
  17.     return br_slova;
  18. }
  19.  
  20.  
  21. std::vector<std::set<std::string>> Razvrstavanje (std::vector<std::string> imena, int k) {
  22.  
  23. if (k < 1 || k > imena.size()) {
  24.         throw std::logic_error("Razvrstavanje nemoguce");
  25.     }
  26. std::vector<std::set<std::string>> v (k);
  27. int n = imena.size();
  28. std::list<std::string> lista (n);
  29. auto it = lista.begin();  
  30.  
  31. for (int i = 0; i < imena.size(); i++) {
  32.     *it = imena[i];
  33.     it++;
  34. }
  35.  
  36.  it = lista.begin();
  37. for ( int j = 0; j < k; j++) {
  38.     if (j < (n % k)) {
  39.         int brojac = 0;
  40.             while (brojac < int (n/k) + 1) {
  41.                 //int velicina = (*it).size();
  42.                 int korak = DuzinaJednogStringa(*it)-1;
  43.                 v[j].insert(*it);
  44.                 it = lista.erase(it); //ovo
  45.                 //if(it == nullptr) break;
  46.                 if (it == lista.end()) it = lista.begin();
  47.                 //std::advance(it, korak);
  48.                 while (korak!=0) {
  49.                     it++; //ovo
  50.                     korak--;
  51.                     if (it == lista.end()) it = lista.begin(); //nema kod kruzne liste
  52.                 }
  53.                 brojac++;
  54.             }
  55.     }
  56.     else {
  57.          int brojac = 0;
  58.             while (brojac < int (n/k)) {
  59.                 //int velicina = (*it).size();
  60.                 int korak = DuzinaJednogStringa(*it)-1;
  61.                 v[j].insert(*it);
  62.                 it = lista.erase(it);
  63.                 if (it == lista.end()) it = lista.begin();
  64.                 //std::advance (it, korak);
  65.                  while (korak!=0) {
  66.                     it++;
  67.                     korak--;
  68.                     if (it == lista.end()) it = lista.begin();
  69.                 }
  70.                 brojac++;
  71.         }
  72.   }
  73. }
  74. return v;
  75. }
  76.  
  77.  
  78. int main ()
  79. {
  80.     int n;
  81.     std::cout << "Unesite broj djece: ";
  82.     std::cin >> n;
  83.      std::cin.clear();
  84.     std::cin.ignore(1000, '\n');
  85.     std::vector<std::string> ime (n); //{"Damir", "Ana", "Muhamed", "Marko", "Ivan", "Mirsad", "Nikolina", "Alen", "Jasmina", "Merima"};
  86.    
  87.    std::cout << "Unesite imena djece:";
  88.    for (int i = 0; i < n; i++) {
  89.        std::string s;
  90.        std::getline(std::cin, s);
  91.        ime[i] = s;
  92.        /*std::cin.clear();
  93.        std::cin.ignore(1000, '\n');*/
  94.    }
  95.     std::vector<std::set<std::string>> krajnji;
  96.     int k;
  97.     std::cout << "Unesite broj timova:";
  98.     std::cin >> k;
  99.     krajnji = Razvrstavanje (ime, k);
  100.     for (int i = 0; i < krajnji.size(); i++) {
  101.         std::cout << "Tim " << i + 1 << ": ";
  102.         int j = 0;
  103.         for (auto x : krajnji[i]) {
  104.         std::cout << x ;
  105.         j++;
  106.         if (j!=krajnji[i].size()-1) std::cout << ",";    //OVO UZME ZADNJI SKUP PA GA ISPISE BEZ RAZMAKA
  107.         }
  108.      /*   for (int j = 0; j < krajnji[i].size(); j++) {
  109.             std::cout << krajnji[i][j];
  110.             if (krajnji[i].size() < krajnji[i].size()-1) std::cout << ", "; NE MOZE DVOSTRUKO INDEKSIRANJE
  111.         }*/                                                                      
  112.         std::cout << std::endl;
  113.     }
  114.     return 0;
  115. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top