Tutorijali.Net forum

Full Version: Pomoc oko zadatka sa kontejnerima
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Evo kako glasi zadatak nikako ga ne mogu rijesiti a i pojam kotejnera mi je malo nejasan.
Zadatak: Napisati apstraktnu klasu Takmicar, iz koje treba izvesti (neapstraktne) klase Momiri, Adnani i Mirkovi. Klasa Takmicar treba da ima cisto virtualnu metodu bool odgovori() koja vraca true ili false u zavisnosti od odgovora. Rezultat se generise slucajno, na osnovu vjerovatnoca. Momiri pogadjaju 1 od 10 pitanja, Adnani 1 od 8, a Mirkovi 29 od 30. Napisati klasu Kviz koja sadrzi neki kontejner Takmicar pokazivaca, metodu za ubacivanje takmicara u kviz, metodu odgovotiSvi() koja pomocu iteratora prolazi kroz kontejner i za sve takmicare poziva metodu odgovori(). Klasa kviz treba da ima i metodu uspjesnost koja vraca ukupnu uspjesnost takmicara u kvizu.

Molim vas ljudi pomagajte sutra imam ispit a nisu mi jasne neke stvari...
pa onda trebaš reči koje stvari ti nisu jasne a ne da postaviš zadatak i očekuješ da ti netko riješi zadatak... još najbolje od svega da ti je ovo i prvi post... mislim da svi forumi u pravilima imaju da ne riješavaju domaće zadatke...
Programiranje se ne uči dan prije ispita... nije to neki štreberski predmet. Nije da pametujem jer sam i sam takav, ali nema pomoći od toga. To da ti nama pokažeš šta si pokušao, pa je negdje zapelo pa bi ti pomogli. Ovako ništa od toga...
Ne ucim ja dan prije ispita vec sam jednom otresao ako vas bas zanima. A drugo nije mi jasno kako da pravim kontejner Takmicara i kako da ih ubacujem ali nema veze hvala vam da to znate uradili bi ovako nista... I da ako vas das zanima pogledajte datum kad sam pristupio forumu pa ce vam biti jasno zasto je prvi post...
zlatkoiv Wrote:da to znate uradili bi ovako nista...
Auuu sad će svi da se potrgaju da urade tvoj zadatak da ti dokažu da znaju...
Nisam to ni mislio evo nesto sam poceo pa molim za pomoc a schmrz vidio sam da si ti pro kako sam pregledao forum tako da ti sigurno znas... Rijesavo si i mnogo vece probleme vidio sam po postovima... Evo sta sam ja poceo:

class Takmicar {
public:
virtual bool odgovori() = 0;
};
class Momiri : public Takmicar {
public:
bool odgovori() {}
};
class Adnani : public Takmicar {
public:
bool odgovori() {}
};
class Mirkovi : public Takmicar {
public:
bool odgovori() {}
};
class Kviz {
public:
vector <Takmicar*> t;
void ubaci(Takmicar* tak) {
t.push_back(tak);
}
};

Kako npr ubaciti Momiri u ovaj konejner vektora i kako kasnije raditi sa njim...
Evo rijesio sam nesto i sam:

#include <cstdlib>
#include <iostream>
#include <vector>


using namespace std;

class Takmicar {
public:
virtual bool odgovori() = 0;
};
class Momiri : public Takmicar {
public:
bool odgovori() { cout << "Momiri" << endl; } // ovo je samo test
};
class Adnani : public Takmicar {
public:
bool odgovori() { cout << "Adnani" << endl; } // ovo je samo test
};
class Mirkovi : public Takmicar {
public:
bool odgovori() { cout << "Mirkovi" << endl; } // ovo je samo test
};
class Kviz {
public:
vector <Takmicar*> t;
void ubaci(Takmicar* tak) {
t.push_back(tak);
}
void ispis() {
for ( int i = 0; i < t.size(); i++ )
cout << t[i]->odgovori() << endl;

}
void odgovoriSvi() {
for ( int i = 0; i < t.size(); i++ )
t[i]->odgovori();

}
};

int main()
{
Kviz k;
Takmicar* m = new Momiri;
k.ubaci(m);
Takmicar* a = new Adnani;
k.ubaci(a);
Takmicar* mi = new Mirkovi;
k.ubaci(mi);
k.ispis();
system("PAUSE");
return 0;
}
Ima na ovom forumu dosta onih koji ovo znaju riješiti, nije to problem, ali nije to dovoljno interesantno da se svi bacaju na to a i nećeš ti imati koristi od toga ako ti neko drugi uradi.

Eto blizu si riješenja, samo još moraš implementirati odgovori() funkcije. Također, u zadatku je navedeno da koristiš iteratore, a ti ih ne koristiš. Primjer korištenja iteratora:
Code:
#include <iostream>
#include <vector>

int main(int argc, char* argv[])
{
    std::vector<int> brojevi;
    brojevi.push_back(2);
    brojevi.push_back(3);

    for(std::vector<int>::iterator it_broj = brojevi.begin(); it_broj != brojevi.end(); it_broj++)
    {
        std::cout << *it_broj << std::endl;
    }
    
    return 0;
}

Možeš typedef koristiti da malo uštediš prostora ali i omogučiš lakše izmjene koda:
Code:
typedef std::vector<int> VektorBrojeva;

...
for(VektorBrojeva::iterator it_broj = brojevi.begin(); it_broj != brojevi.end(); it_broj++)
...

Eto sad malo razmisli kako da implementiras tu preostalu funkciju, nije teško ali ako zapneš tu smo. Ali ipak dobro razmisli Namigivanje

Još nešto, zamolio bih te da formatiraš kod kako treba (koristi [code] tagove). Također, ne koristiš indentaciju u svom kodu. Da sam ja (a i svi koji se iole bave programiranje) profesor to bi bio minimalni uslov da uopšte provjerim da li ti zadatak radi pa se pazi toga da ne kehneš bezveze na ispitu.
Reference URL's