All code : https://pastebin.com/k7TZzQEY
/*If i remove try catch runtime error appear.*/
try
{
SnowAdventure.DodajUplatu(nisvet, trening_1, uplata_1, "trening");
SnowAdventure.DodajUplatu(nisvet, trening_2, uplata_2, "trening");
SnowAdventure.DodajUplatu(nisvet, trening_3, uplata_3, "trening");
SnowAdventure.DodajUplatu(nisvet, trening_1, oprema_nm, "oprema");
SnowAdventure.DodajUplatu(nisvet, trening_3, oprema_NM, "oprema");
}
catch (const std::exception& obj)
{
obj.what();
}
/*Function*/
void DodajUplatu(Ucenik & ucenik, Trening & trening, Uplata & uplata, string svrha) {
for (int i = 0; i < _treninzi.size(); i++)
{
for (int j = 0; j < _treninzi[i].getUcenici().size(); j++)
{
if (*_treninzi[i].getUcenici()[j] == ucenik) {
if (svrha == "oprema") {
int size = _treninzi[i].getUcenici()[j]->getIznajmljenaOprema()->size();
bool uplaceno = false;
for (int k = 0; k < size; k++)
{
Oprema * oprema = &(*_treninzi[i].getUcenici()[j]->getIznajmljenaOprema())[k];
if (oprema->getCijena() >= uplata.getIznos()) {
_treninzi[i].getUcenici()[j]->DodajUplatu(uplata, svrha);
uplaceno = true;
return;
}
}
if (!uplaceno) {
throw exception("Niste uplatili!");
return;
}
}
else
{
if (trening.getTipTreninga() == Pocetnicki) {
if (uplata.getIznos() == trening.getBrojCasova() * 10) {
_treninzi[i].getUcenici()[j]->DodajUplatu(uplata, svrha);
return;
}
else {
throw exception("Niste uplatili dovoljno novca!");
}
}
else if(trening.getTipTreninga()==Rekreativni)
{
if (uplata.getIznos() == trening.getBrojCasova() * 15) {
_treninzi[i].getUcenici()[j]->DodajUplatu(uplata, svrha);
return;
}
else {
throw exception("Niste uplatili dovoljno novca!");
}
}
else
{
if (uplata.getIznos() == trening.getBrojCasova() * 20) {
_treninzi[i].getUcenici()[j]->DodajUplatu(uplata, svrha);
return;
}
else {
throw exception("Niste uplatili dovoljno novca!");
}
}
}
}
throw exception("Nepoznat ucenik koji je zaprimljen kao parametar!");
}
}
}