[ antonija @ 09.09.2004. 11:37 ] @
Molim vas da mi provjerite da li je ovo rešenje ovog zadatka dobro i da li se moze bolje rešiti. Zadatak glasi:
Dizajnirajte i realizirajte klase koje opisuju građu u videoteci.
A moje rješenje je ovo:
#include <iostream>
using namespace std;

enum Zanr { horror, drama, komedija, crtic, triler, akcijski, psiholoski, mjuzikl, dokumentarac };

class Clan {
private:
static float Id_broj;
float tel;
char *ime, *adresa;
public:
Clan() : tel(0), ime(new char[30]), adresa(new char[50]) {
};
Clan(char *i, char *a, float t) {
tel = t;
ime = i;
adresa = a;
Id_broj = Id_broj + 1;
};
float DajId_broj() { return Id_broj; }
float DajTel() { return tel; }
char *DajIme() { return ime; }
char *DajAdresu() { return adresa; }
void PostaviTel(float t) { tel = t; }
void PostaviAdr(char *a) { adresa = a; }
~Clan() {
delete [] ime;
delete [] adresa;
}
};

class Film : public Clan {
private:
Clan posudio;
bool pos;
static float Id;
Zanr vrsta;
int god_proizv;
char *naziv, *zemlja;
public:
Film(Zanr v, int g, char *n, char *z) {
Clan c();
pos = false;
vrsta = v;
god_proizv = g;
naziv = n;
zemlja = z;
Id = Id + 1;
}
void Posudba(Clan c) {
pos = true;
posudio = c;
}
Clan DajClana() { return posudio; }
bool Posudena() { return pos; }
Zanr DajZanr() { return vrsta; }
char *DajNaziv() { return naziv; }
char *DajZemlju() { return zemlja; }
float DajId() { return Id; }
int DajGod() { return god_proizv; }
~Film() {
delete [] naziv;
delete [] zemlja;
}
};

Bila bih vam vrlo zahvalna kad bi me uputili na neke nedostatke u ovom kodu iako kompajler ne javlja nikakvu grešku.Hvala!





[ Srki_82 @ 09.09.2004. 20:52 ] @
Code:

#include <windows.h>
#include <iostream>
#include <string>
using namespace std;

class Clan {
private:
static int BrojClanova;
int Id_broj;
wstring tel, ime, adresa;
public:
Clan() : tel( L"" ), ime( L"" ), adresa( L"" ) { 
};
Clan(LPWSTR i, LPWSTR a, LPWSTR t) {
tel = t;
ime = i;
adresa = a;
Id_broj = ++BrojClanova; //Ako hoces da ti Id_broj ide od 0 napisi BrojClanova++
};
int DajId_broj() { return Id_broj; }
wstring DajTel() { return tel; }
wstring DajIme() { return ime; }
wstring DajAdresu() { return adresa; }
void PostaviTel(wstring t) { tel = t; }
void PostaviAdr(wstring a) { adresa = a; }
~Clan() {
}
};

Ja bih ovako definisao ovu klasu. U tvom slucaju Id_broj si definisao ovako
Code:

static float Id_broj;

sto znaci da za sve objekte tipa Clan postoji samo jedan Id_broj... kad ga povecas u jednom objektu on se poveca u svim tako da bi ti svaki objekat funkcijom DajId_broj vracao istu vrednost. Ako si to i hteo onda sam ja pogresno shvatio svrhu te promenljive :)
Sve ostalo je u sustini isto jedino sto sam koristio promenljive tipa wstring koje umesto tebe barataju kreiranjem i unistavanjem stringova i jos su i unicode tako da podrzavaju i nasa slova.
Negde u programu bi trebao da definises promenljivu
Code:

int Clan::BrojClanova = 0;

i posle kreiranja svakog objekta klase Clan ta promenljiva ce se uvecati za jedan. Probaj ovo cini mi se da bi trebalo da radi.

Sto se tice ove druge klase... mislim da nema logike da nasledjuje klasu Clan. Klasa Film treba samo da sadrzi jedan objekat koji ce da pokazuje da li je film izdat ili ne. Ako je objekat = NULL film nije izdat, a ako != NULL onda je izdat, a objekat sadrzi podatke o osobi koja je uzela film.
[ filmil @ 09.09.2004. 23:00 ] @
"Srki_82" wrote:
Citat:
Code:

Code:

 #include windows.h
         
Smem da pitam šta ovde traži windows.h?!

f
[ Srki_82 @ 09.09.2004. 23:06 ] @
Ups... sorry... navika :)
[ filmil @ 10.09.2004. 00:35 ] @
Stvarno ću početi da brišem poruke u kojima se bez razloga pominje windows... :)

f
[ antonija @ 13.09.2004. 12:57 ] @
Hvala vam puno na pomoći!