Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Klasa Movie

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Klasa Movie

[ Pregleda: 2628 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nihad3tzo
Nihad Bajramovic
Student
Sarajevo

Član broj: 165234
Poruke: 3
85.158.36.*



Profil

icon [Zadatak] Klasa Movie04.01.2008. u 12:21 - pre 165 meseci
Postovanje i pozdravi svim clanovima foruma,novi sam na forumu i ovo mi je prvo javljanje.Student sam i studiram programiranje(pocetnik) i molio bih vas za pomoc .Naime radim projekat iz c++(to nam je umjesto ispita) i zapeo sam na jednom problemu.Treba da napravim klasu koja mora sadrzavati ime filma,kolko je puta pregledan film i rating filma uradio sam vecinu koda(valjda je dobro,funkcionise zasad) ali ne znam kako da napravim da mogu ukucavati vishe filmova i za svaki film rejting i koliko je puta pregledan! U mom kodu mogu postaviti samo jedan film i za njega navedene parametre,takodje nemogu nikako da napishem text npr. "movie name" funkcionishe i kad se run-a pise fino movie name i ime filma,ali ne znam u liniji ispod napisati kod da se ispisuje i movie rating i ispred rating filma !molim za pomoc jer stvarno ne znam kako da to kodiram.
Ispod je kod koji sam napisao:

Code:

#include<iostream>
#include<string>
using namespace std;
class movies
{
     private:
         string movieName;
         int movieWatch;
         string movieRating;
         
     public:
            void displayMessage1()
            {
                 cout<<"Movie name: ";
                 }
         
            void setMovieName(string movieName_new)
              {
                     movieName=movieName_new;
                     }
                     string getMovieName()
                     {
                            return movieName;
                            }              
             void setMovieWatch(int movieWatch_new)
              {
                     movieWatch=movieWatch_new;
                     }
                     int getMovieWatch()
                     {
                            return movieWatch;
                            }                 
             void setMovieRating(string movieRating_new)
              {
                     movieRating=movieRating_new;
                     }
                     string getMovieRating()
                     {
                            return movieRating;
                            }                              
};
int main()
{
    movies movie;
    movie.displayMessage1();
    movie.setMovieName("four brothers");
    cout<<movie.getMovieName()<<endl;
     movie.setMovieWatch(14);
    cout<<movie.getMovieWatch()<<endl;
    movie.setMovieRating("*****");
    cout<<movie.getMovieRating()<<endl;
    
    
    system("pause");
    return 0;
}


EDIT: X Files : Molim Vas da zbog preglednosti, kod upisujete između tag-ova predviđenih za to:

[code]
int main ( int argc, char *argv[] )
{
// ...
return 0;
}
[/code]

Hvala na razumevanju i srećan rad.


[Ovu poruku je menjao X Files dana 04.01.2008. u 18:41 GMT+1]
 
Odgovor na temu

xeron
Sarajevo

Član broj: 25909
Poruke: 133
89.146.173.*



Profil

icon Re: [Zadatak] Klasa Movie04.01.2008. u 14:30 - pre 165 meseci
Koristiš tzv. kontejnerske klase. Znaci napravis klasu Film i klasu Filmovi. Klasa Filmovi će biti kontejnerska klasa koja se se koristiti za pohranjivanje niza objekata tipa Film.
if (argc > 1 && strcmp(argv[1], "-advice") == 0) {
printf("Don't Panic!n");
exit(42);
}
 
Odgovor na temu

nihad3tzo
Nihad Bajramovic
Student
Sarajevo

Član broj: 165234
Poruke: 3
85.158.36.*



Profil

icon Re: [Zadatak] Klasa Movie04.01.2008. u 16:09 - pre 165 meseci
Hvala velika na pomoci,mislim da sam shvatio kako to funkcionise . . .bacam se na posao:D
 
Odgovor na temu

Branimir Maksimovic
Senior Software Engineer

Član broj: 64947
Poruke: 5441
*.bvcom.net.



+1054 Profil

icon Re: [Zadatak] Klasa Movie04.01.2008. u 17:36 - pre 165 meseci
Imas standardne kontejnerske klase, u ovom slucaju bi bile interesantne list ili vector.
Ovo je reference za listu:
http://www.sgi.com/tech/stl/List.html

Pozzzzzz!
press any key to continue or any other to quit....
 
Odgovor na temu

Sephiroth?
Balkan @ net

Član broj: 79406
Poruke: 82
*.bi2.dlp400.bih.net.ba.



Profil

icon Re: [Zadatak] Klasa Movie04.01.2008. u 17:45 - pre 165 meseci
Evo par savjeta:

1.) obavezno nabavi sebi neku knjigu po kojoj ces sam uciti C++, te je isto koristiti kada nesto zapne. Probaj Teach Yourself C++ in 21 Days by Jesse Liberty. Nije opsirna, dobra je za pocetnike, dobra je za neke osnovne elemente jezika.

2.) Pripazi malo na izgled koda, stil uvlacenja i ostalo. Ovako napisan kod ti je veoma nepregledan. Koristi uvlacenje redova, vertikalno ravnanje, koristenje praznih redova izmedju linija koda da naglasis vaznost pojedinih blokova.

3.) Za pocetak, evo tvoje klase u malo promijenjenom izdanju:

Code:


class Movie
{
    private:
            
 string title;
 int timesWatched;
 string rating;

    public:
 
 Movie() {} // prazan konstruktor
 Movie(string newTitle, int newTimes, string newRating);
 
 // get metode
 string getTitle() const { return title; }
 int getTimesWatched() const { return timesWatched; }
 string getRating() const { return rating; }
 
 //set metode
 void setTitle(string newTitle) { title = newTitle; }
 void setTimesWatched(int newTimes) { timesWatched = newTimes; }
 void setRating(string newRating) { rating = newRating; }

};

// konstruktor sa parametrima, prototip deklarisan u klasi
Movie::Movie(string newTitle, int newTimes, string newRating)
 {
  title = newTitle;
  timesWatched = newTimes;
  rating = newRating;
 }



- include <string> ti ne treba, klasa je ukljucena preko using namespace std
- imena varijabli kao movieName su ti dobra, ali npr. ovo movie ti je suvisno. Dovoljno ti je name, jer ti ova varijabla pripada Movie klasi, to dovoljno govori o njoj. Ostale varijable takodjer. Ipak, promijenio sam name u title, jer se ipak radi o nazivu filma.
- Sve metode su ti inline. Za znacenje inline potrazi po netu malo, ili po ovome forumu. Uglavnom, one su inline jer si ih implementirao odmah u klasi. Ne znam da li je ovo namjerno ili ne.
- Nemas konstruktora. Za pojam konstruktora takodjer malo potrazi po netu. Pomocu njega znatno olaksavas unos u tvom primjeru.

Sto se tice zadatka koji trebas uraditi, ideja je slijedeca. Tebi treba nesto slicno bazi podataka filmova. Znaci, moras imati jednu klasu koja ti sprema podatke o datom fimu. To ti je gornja klasa Movie. Zatim, treba ti klasa koja ce spremati vise tipova podataka Movie, te tako ciniti datu bazu. Naravno, ovo mozes uraditi i strukturnim programiranjem u samoj funkciji main(). Napravis niz tipa Movie, spremas filmove u njega, par petlji da ga ispises i to je otprilike to. Mislim da tebe navise buni to sto mislis da od jedne klase mozes napraviti samo jednu instancu(objekat, kako god…). To nije tacno:

Code:


Movie A;
Movie B;

A.setMovieName(“Gladiator”);
B.setMovieName(“Titanik”);

cout << A.getMovieName() << endl;
cout << B.getMovieName() << endL;



Ovo bi bilo koristeci tvoju klasu.

Ipak, puno ljepsi, bolji, efikasniji nacin je pomocu objektnog programiranja. Napravis klasu koja ce “glumiti” bazu podataka filmova.

Code:


class Movies
{
    private:
            
 Movie *data;        // pointer za spremanje niza
 int dataCount;      // broj filmova u bazi
 int size;           // velicina baze
 
    public:
 
 Movies() {}         // prazan konstruktor
 Movies(int newSize);  // konstruktor sa parametrom size
 
 void insert(Movie newMovie);    // insert sluzi za stavljanje filmova u bazu
 Movie getMovie(int index);    // pomocu getMovie(), moze se "dohvatiti" bilo koji film
 void show(int index);      // show() je samo za ispis pojedinog filma
};

// konstruktor sa parametrom size
Movies::Movies(int newSize)
 {
  size = newSize;
  data = new Movie[size];
  dataCount = 0;
 }


void Movies::insert(Movie newMovie)
 {
  if (dataCount >= size)
   cout << "Memory full" << endl;
  else
   {
    data[dataCount] = newMovie;
    dataCount++;
   }
 }
 


Movie Movies::getMovie(int index)
 {
  if ( (index >= 0) && (index < dataCount) )
   return data[index];
  else
   return data[0];
 }
 
 

void Movies::show(int index)
 {
  if ( (index >= 0) && (index < dataCount) )
   {
    Movie toShow = data[index];
    cout << "Naziv filma: " << toShow.getTitle() << endl;
    cout << "Broj pregleda: " << toShow.getTimesWatched() << endl;
    cout << "Rating: " << toShow.getRating() << endl; 
   }
  else
   cout << "Film pod tim brojem ne postoji!" << endl;
 }




Problem oko tvoga zadatka je sto bi se trebalo upotrijebiti dosta tehnika da se uradi efikasno (ne znam koliko si upoznat sa njima): dinamicko alociranje, nizovi (ili neka slozenija struktura podataka), pointeri…

Sto se tice samih pointera, da te ne zbunjujem: dovoljno je znati slijedece:

Code:

int *pointer;
pointer = new int[10];

ti je isto kao da si napisao:

int pointer[10];



Radi se o nizovima naravno… U zadatku se implementira niz filmova.

Evo kako bi to izgledalo da se implementira:

Code:

// main funkcija
int main(void)
 {
  Movie A("Gladijator", 12, "***");
  Movie B("Titanik", 1, "*");
  
  Movies database(2);
  
  database.insert(A);
  database.insert(B);
  
  database.show(1);
  
  Movie C = database.getMovie(0);
  cout << "\n" << C.getTitle() << endl;
  
  system("pause");
  return EXIT_SUCCESS;
 }


Cijeli kod je u attachmentu...
Prikačeni fajlovi
 
Odgovor na temu

Branimir Maksimovic
Senior Software Engineer

Član broj: 64947
Poruke: 5441
*.bvcom.net.



+1054 Profil

icon Re: [Zadatak] Klasa Movie04.01.2008. u 18:24 - pre 165 meseci
samo da dodam using namespace std; uvlaci u deklarativni region sve iz namespace-a std,
ali to ne znaci da ce i includovati sve zivo, vec samo ono sto je definisano u datom fajlu.
Dakle #include <string> jeste neophodno ako se koristi string, a potom using... povlaci
sve includovane definicije iz std-a u global scope.

Pozzzzzz!

press any key to continue or any other to quit....
 
Odgovor na temu

nihad3tzo
Nihad Bajramovic
Student
Sarajevo

Član broj: 165234
Poruke: 3
85.158.36.*



Profil

icon Re: [Zadatak] Klasa Movie04.01.2008. u 20:22 - pre 165 meseci
Hvala velika svima ,posebno denisu, cijenim trud ulozen u pisanje ovako velikog posta . . .knjigu sam vec narucio trebla bi stic za koji dan,a dosta sam shvatio stvari iz denisovog posta!
Hvala josh jednom,ovo mi je od velike pomoci!
pozzz
 
Odgovor na temu

Sephiroth?
Balkan @ net

Član broj: 79406
Poruke: 82
*.bi2.dlp439.bih.net.ba.



Profil

icon Re: [Zadatak] Klasa Movie04.01.2008. u 21:08 - pre 165 meseci
Nista, zato smo tu da pomognemo. Ti se samo trudi dalje... Pozdrav!
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Klasa Movie

[ Pregleda: 2628 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.