Poslao: 18 Nov 2013 21:02
|
offline
- E.L.I.T.E.
- Legendarni građanin
- Pridružio: 23 Maj 2012
- Poruke: 4575
|
Imam u programu klasu drzava i funkciju koja sluzi da korisnik unese prvo da li želi da regrutuje vojnika/zaposli radnika i da unese broj ljudi. Ta funkcija nakon toga treba da izračuna ukupnu cenu hrane koju korisnik treba da izdvoji za kupovinu i ako je korisnik ima da poveća broj radnika/vojnika i smanji broj hrane.
int dodajLjude() {
int vojnik, radnik, tip, broj;
cout << "Ukucajte 1 (za radnika) ili 2 (za vojnika) i broj njih koliko zelite da zaposlite/regrutujete." << endl;
cout << "Tip (1 ili 2): ";
cin >> tip;
cout << endl;
cout << "Broj: ";
cin >> broj;
cout << endl;
// cena radnika i vojnika
int cenaR = broj * 35;
int cenaV = broj * 50;
// cena radnika i vojnika
if (tip == 1) {
if (cenaR > drzava1.hrana) {
cout << "Ne mozete da zaposlite jos radnika! Razlog: Nemate dovoljno hrane." << endl;
}
else{
cout << "Uspesno ste zaposlili " << broj << " radnika!" << endl;
drzava1.hrana -= cenaR;
drzava1.radnika += broj;
}
else if (tip == 2) {
if (cenaV > drzava1.hrana) {
cout << "Ne mozete da zaposlite jos vojnika! Razlog: Nemate dovoljno hrane." << endl;
}
else{
cout << "Uspesno ste zaposlili " << broj << " vojnika!" << endl;
drzava1.hrana -= cenaV;
drzava1.vojnika += broj;
}
}
}
}
E sad, ta funkcija ide pre main() funkcije kada još nije učitana drzava1. Da li postoji još neko dobro rešenje sem da funkciju dodajLjude() stavim u funkciju main(), to jest parametre iz drzava1 koristim pre?
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 18 Nov 2013 21:19
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14822
- Gde živiš: Niš
|
Napisano: 18 Nov 2013 21:13
A što ta funkcija ne bi postala funkcija članica klase država? Ovako su ti sve promenljive lokalne i postoje samo za vreme izvršenja funkcije.
Dopuna: 18 Nov 2013 21:18
Takođe, funkcija može biti i prijateljska funkcija klasi država čime će joj biti dozvoljen pristup svim privatnim promenljivima klase država.
Dopuna: 18 Nov 2013 21:19
Elem, piše da funkcija ima celobrojnu povratnu vrednost, a funkcija nigde ne vraća vrednost. Ako već ne vraća vrednost, onda neka bude void.
|
|
|
|
Poslao: 18 Nov 2013 21:32
|
offline
- E.L.I.T.E.
- Legendarni građanin
- Pridružio: 23 Maj 2012
- Poruke: 4575
|
Napisano: 18 Nov 2013 21:29
Upravo do te lekcije sam stigao ; Prijateljske klase. Dakle, to bi bilo nešto ovako:
#include <iostream>
#include <cmath>
#include <ctime>
#include <string>
drzava1 drzava;
class drzava {
private:
int hrana, radnika, vojnika (...);
friend int dodajlLjude();
};
Jel' tako?
Dopuna: 18 Nov 2013 21:32
vasa.93 ::Elem, piše da funkcija ima celobrojnu povratnu vrednost, a funkcija nigde ne vraća vrednost. Ako već ne vraća vrednost, onda neka bude void.
Da, primetio sam da u debageru upozorava na to. To sam planirao da rešim kasnije vraćajući neke vrednosti koje su potrebne u igri. Negde sam ovde pročitao da nije preporučljivo koristiti void, pokušaću sutra da nađem taj link (mislim da je morando nešto spomenuo oko toga).
|
|
|
|
Poslao: 18 Nov 2013 21:41
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14822
- Gde živiš: Niš
|
E.L.I.T.E. ::Upravo do te lekcije sam stigao ; Prijateljske klase. Dakle, to bi bilo nešto ovako:
...
Jel' tako?Da. Funkciju kasnije možeš da definišeš bilo gde.
No, bolje bi bilo da funkciju definišeš kao funkciju članicu klase jer bi, ukoliko bi funkcija bila prijateljska, prilikom poziva funkcije morao jedan od parametara da bude objekat nad kojim želiš da izvršiš funkciju. Kada bi funkciju definisao kao članicu klase ne bi morao da imaš parametre.
|
|
|
|
|
|
Poslao: 18 Nov 2013 22:10
|
offline
- E.L.I.T.E.
- Legendarni građanin
- Pridružio: 23 Maj 2012
- Poruke: 4575
|
vasa.93 ::No, bolje bi bilo da funkciju definišeš kao funkciju članicu klase jer bi, ukoliko bi funkcija bila prijateljska, prilikom poziva funkcije morao jedan od parametara da bude objekat nad kojim želiš da izvršiš funkciju. Kada bi funkciju definisao kao članicu klase ne bi morao da imaš parametre.
To o čemu si pričao
|
|
|
|
|