Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- #include <list>
- #include <set>
- bool JelOk(char s)
- {
- if (s>='0' && s<='9' || s>='A' && s<='Z'|| s>='a' && s<='z') return true; //provjerava jel slovo i cifra
- return false;
- }
- std::vector<std::set<std::string>> Razvrstavanje (std::vector<std::string> imena, int broj_timova)
- {
- if (broj_timova<1 || broj_timova>imena.size()) throw std::logic_error("Razvrstavanje nemoguce");
- std::vector<std::set<std::string>> vektor_skupova;
- int vel=imena.size(), koliko(0), kolicina; // broj djece, koliko +1, kolicina djece u normalnim
- kolicina=vel/broj_timova;
- if (vel%broj_timova!=0) koliko=vel%broj_timova;
- std::list<std::string> lista; //lista koju moram koristiti
- for (auto it=imena.begin(); it!=imena.end(); it++) lista.push_back(*it); //umecem u listu
- auto it=lista.begin();
- int provjera(0); //sluzi da vidi jesam li popunila sve timove iskr
- while (provjera!=broj_timova) {
- std::set<std::string> skup;
- if (koliko==0) {
- for (int k=0; k<kolicina; k++) {
- int br(0), brojac(0);
- for (int i=0; i<(*it).length(); i++) if (JelOk((*it).at(i))) br++;
- skup.insert(*it);
- it=lista.erase(it);
- while (brojac!=br) {
- it++;
- if (it==lista.end()) it=lista.begin();
- brojac++;
- }
- }
- vektor_skupova.push_back(skup);
- skup.clear();
- provjera++;
- } else {
- for (int j=0; j<koliko; j++) {
- for (int k=0; k<kolicina+1; k++) {
- int br(0), brojac(0);
- for (int i=0; i<(*it).length(); i++) if (JelOk((*it).at(i))) br++;
- skup.insert(*it);
- it=lista.erase(it);
- while (brojac!=br) {
- it++;
- if (it==lista.end()) it=lista.begin();
- brojac++;
- }
- }
- vektor_skupova.push_back(skup);
- skup.clear();
- provjera++;
- }
- for (int k=0; k<kolicina; k++) {
- int br(0), brojac(0);
- for (int i=0; i<(*it).length(); i++) if (JelOk((*it).at(i))) br++;
- skup.insert(*it);
- it=lista.erase(it);
- while (brojac!=br) {
- it++;
- if (it==lista.end()) it=lista.begin();
- brojac++;
- }
- }
- vektor_skupova.push_back(skup);
- skup.clear();
- provjera++;
- }
- }
- return vektor_skupova;
- }
- int main ()
- {
- try {
- std::vector<std::string> djeca;
- int broj_djece, broj_timova;
- std::cout << "Unesite broj djece: ";
- std::cin >> broj_djece;
- std::cin.ignore(10000, '\n');
- std::cout << "Unesite imena djece: ";
- for (int i=0; i<broj_djece; i++) {
- std::string rijec;
- std::getline(std::cin, rijec);
- djeca.push_back(rijec);
- }
- std::cout << "\nUnesite broj timova: ";
- std::cin >> broj_timova;
- auto timovi=Razvrstavanje(djeca, broj_timova);
- for (int i=0; i<broj_timova; i++) {
- std::cout << "Tim " << i+1 << ": ";
- int br(0);
- for (auto s:timovi.at(i)) {
- if (br==timovi.at(i).size()-1) std::cout << s;
- else std::cout << s << ", ";
- br++;
- }
- std::cout << std::endl;
- }
- } catch (std::logic_error e) {
- std::cout << "Izuzetak: " << e.what();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement