Professional Documents
Culture Documents
Dokumentacia SEM2
Dokumentacia SEM2
semestrálna práca
Aplikácia na spracovanie volebných výsledkov
Algoritmy a údajové štruktúry 1
Timea Krúpová
5ZY026
Návrh aplikácie:
Aplikácia sa skladá zo 4 tried a z triedy údajových štruktúr, ktoré sme robili na cvičeniach.
Trieda MainCntrl predstavuje hlavnú logiku systému v ktorej sú vykonávané všetky dôležité
metódy.
Trieda UzemnaJednotka predstavuje územnú jednotku a je v nej zoznam kandidátov, ktorý sa ale
nepoužíva momentálne.
Trieda Kandidát predstavuje kandidáta ale tiež je nevyužitá.
Trieda MyFrom zabezpečuje prosredie gui.
Zložitosť operácií:
1. Nacitanie zo suborov.
Dlha na vypisovanie sem, mozem ukazat v kode
}//duplicity
if (pomocny.compare(" ") != 0)
{
return pomocny;
}
Zlozitost O(N) – kvoli duplicitam musime prejst celu tabulku t.j. vsetky
kraje
if (pomocnaStruktura->isEmpty())
{
return "Nenajdene";
}
//utried tabulku podla nazvov
for (size_t i = 0; i < pomocnaStruktura->size(); i++)
{
tPomocna->insert(pomocnaStruktura->operator[](i)->getObecNazov(), pomocnaStruktura-
>operator[](i));
}
//QuickSort<int, UzemnaJednotka*> *sort = new QuickSort<int, UzemnaJednotka*>;
//sort->sort(*tPomocna);
pomocnaStruktura->clear();
if (z == VZOSTUPNE)
{
for (auto item : *tPomocna)
{
navratovy += item->accessData()->getObecNazov() + ", ";
}
return navratovy;
}
if (z == ZOSTUPNE)
{
for (auto item : *tPomocna)
{
pomocnaStruktura->add(item->accessData()) ;
}
for (int i = pomocnaStruktura->size() - 1 ; i >= 0; i--)
{
navratovy += pomocnaStruktura->operator[](i)->getObecNazov() + ", ";
}
return navratovy;
}
}
Zlozitost o(M) + 3*O(N) kvoli for cyklom, ktore idu cez tabulky
7. Filter ucast+nazov + kriterium volici
if (pomocnaStruktura->isEmpty())
{
return "Nenajdene";
}
//utried tabulku podla volicov
for (size_t i = 0; i < pomocnaStruktura->size(); i++)
{
tPomocna->insert(pomocnaStruktura->operator[](i)->getZapisaniVolici(), pomocnaStruktura-
>operator[](i));
}
pomocnaStruktura->clear();
if (z == VZOSTUPNE)
{
for (auto item : *tPomocna)
{
navratovy += item->accessData()->getObecNazov() + ": " + to_string(item-
>accessData()->getZapisaniVolici()) + ", ";
}
return navratovy;
}
if (z == ZOSTUPNE)
{
for (auto item : *tPomocna)
{
pomocnaStruktura->add(item->accessData());
}
for (int i = pomocnaStruktura->size() - 1; i >= 0; i--)
{
navratovy += pomocnaStruktura->operator[](i)->getObecNazov() + ": " +
to_string(pomocnaStruktura->operator[](i)->getZapisaniVolici()) + ", ";
}
return navratovy;
}
}
Zlozitost o(M) + 3*O(N) kvoli for cyklom, ktore idu cez tabulky
string MainCntrl::utriedUcast(string * nazov, string * ucastOd, string * ucastDo, Kolo kolo, Zoradenie
z)
{
SortedSequenceTable<double, UzemnaJednotka*> *tPomocna = new SortedSequenceTable<double,
UzemnaJednotka*>();
ziskajNazvy(nazov, ucastOd, ucastDo, kolo);
string navratovy = "";
if (pomocnaStruktura->isEmpty())
{
return "Nenajdene";
}
//utried tabulku podla ucasti
for (size_t i = 0; i < pomocnaStruktura->size(); i++)
{
double kluc = pomocnaStruktura->operator[](i)->getUcast() + i / 10000.00;
tPomocna->insert(kluc, pomocnaStruktura->operator[](i));
}
//QuickSort<double, UzemnaJednotka*> *sort = new QuickSort<double, UzemnaJednotka*>;
//sort->sort(*tPomocna);
pomocnaStruktura->clear();
if (z == VZOSTUPNE)
{
for (auto item : *tPomocna)
{
navratovy += item->accessData()->getObecNazov() + ": " + to_string(item-
>accessData()->getUcast()) + ", ";
}
return navratovy;
}
if (z == ZOSTUPNE)
{
for (auto item : *tPomocna)
{
pomocnaStruktura->add(item->accessData());
}
for (int i = pomocnaStruktura->size() - 1; i >= 0; i--)
{
navratovy += pomocnaStruktura->operator[](i)->getObecNazov() + ": " +
to_string(pomocnaStruktura->operator[](i)->getUcast()) + ", ";
}
return navratovy;
}
}
Zlozitost o(M) + 3*O(N) kvoli for cyklom, ktore idu cez tabulky
Navod na pouzitie:
Cez gui. Treba mat zaskrtane giltre a criteria pre ktore chceme vypis
Diagram tried: