Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //TP 2018/2019: Zadaća 3, Zadatak 4
- #include <iostream>
- #include <string>
- #include <vector>
- #include <set>
- #include <list>
- bool JesteSlovo (char c) {
- if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '1' && c <= '9')) return true;
- return false;
- }
- int DuzinaJednogStringa (std::string s) {
- int br_slova = 0;
- for (int i = 0; i < s.size(); i++) {
- if (JesteSlovo(s[i])) br_slova++;
- }
- return br_slova;
- }
- std::vector<std::set<std::string>> Razvrstavanje (std::vector<std::string> imena, int k) {
- if (k < 1 || k > imena.size()) {
- throw std::logic_error("Razvrstavanje nemoguce");
- }
- std::vector<std::set<std::string>> v (k);
- int n = imena.size();
- std::list<std::string> lista (n);
- auto it = lista.begin();
- for (int i = 0; i < imena.size(); i++) {
- *it = imena[i];
- it++;
- }
- it = lista.begin();
- for ( int j = 0; j < k; j++) {
- if (j < (n % k)) {
- int brojac = 0;
- while (brojac < int (n/k) + 1) {
- //int velicina = (*it).size();
- int korak = DuzinaJednogStringa(*it)-1;
- v[j].insert(*it);
- it = lista.erase(it); //ovo
- //if(it == nullptr) break;
- if (it == lista.end()) it = lista.begin();
- //std::advance(it, korak);
- while (korak!=0) {
- it++; //ovo
- korak--;
- if (it == lista.end()) it = lista.begin(); //nema kod kruzne liste
- }
- brojac++;
- }
- }
- else {
- int brojac = 0;
- while (brojac < int (n/k)) {
- //int velicina = (*it).size();
- int korak = DuzinaJednogStringa(*it)-1;
- v[j].insert(*it);
- it = lista.erase(it);
- if (it == lista.end()) it = lista.begin();
- //std::advance (it, korak);
- while (korak!=0) {
- it++;
- korak--;
- if (it == lista.end()) it = lista.begin();
- }
- brojac++;
- }
- }
- }
- return v;
- }
- int main ()
- {
- int n;
- std::cout << "Unesite broj djece: ";
- std::cin >> n;
- std::cin.clear();
- std::cin.ignore(1000, '\n');
- std::vector<std::string> ime (n); //{"Damir", "Ana", "Muhamed", "Marko", "Ivan", "Mirsad", "Nikolina", "Alen", "Jasmina", "Merima"};
- std::cout << "Unesite imena djece:";
- for (int i = 0; i < n; i++) {
- std::string s;
- std::getline(std::cin, s);
- ime[i] = s;
- /*std::cin.clear();
- std::cin.ignore(1000, '\n');*/
- }
- std::vector<std::set<std::string>> krajnji;
- int k;
- std::cout << "Unesite broj timova:";
- std::cin >> k;
- krajnji = Razvrstavanje (ime, k);
- for (int i = 0; i < krajnji.size(); i++) {
- std::cout << "Tim " << i + 1 << ": ";
- int j = 0;
- for (auto x : krajnji[i]) {
- std::cout << x ;
- j++;
- if (j!=krajnji[i].size()-1) std::cout << ","; //OVO UZME ZADNJI SKUP PA GA ISPISE BEZ RAZMAKA
- }
- /* for (int j = 0; j < krajnji[i].size(); j++) {
- std::cout << krajnji[i][j];
- if (krajnji[i].size() < krajnji[i].size()-1) std::cout << ", "; NE MOZE DVOSTRUKO INDEKSIRANJE
- }*/
- std::cout << std::endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement