Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 5.852 pregleda

Najnovija ↓

problem sa izvedenom klasom 29.08.2007. u 03:26 · pre 233 meseca
izmenjeno 1 put, poslednji put X Files 02.09.2007. u 21:34
  1. X Files02.09.2007. u 21:34zapis iz teksta poruke
#1
Pozdrav svima, evo jednog problema koji pokusavam resiti, nesto nije u redu sa klasom ili pokazivacima, cilj je praviti police sa nizom knjiga... ali po unosenju 3. knjige win ljubazno moli da se microsoftu posalje informacija o problemu... bla bla...
prevodioc ne javlja nijedno upozorenje niti gresku... moze li neka strucna pomoc, hvala!

Code:

//main.cpp
#include "polica.h"
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
    int f=10;
    Polica e;
    e.kreiraj(f);
}




//knjiga.h
class Knjiga {
    int x;
public:
    Knjiga(int xx=0) {x=xx;}
    int prikaziX() const {return x;}
    void citaj();
    void pisi() const;
};



//knjiga.cpp
#include "knjiga.h"
#include <iostream>
using namespace std;

void Knjiga::pisi() const{
    cout<<x<<endl;
}

void Knjiga::citaj() {
    int x1;
    cout<<"broj knjige:";
    cin>>x1;
    x=x1;
}



//polica.h
#include "knjiga.h"

class Polica:public Knjiga {
    Knjiga** niz;
    int brp, kap;
    void brisi() {delete []niz;}
public:
    Polica(int k=10)
    { niz=new Knjiga* [kap=k]; }
    ~Polica() {brisi();}

    int kreiraj(int i) {
     Knjiga** niz=new Knjiga*[i];
     for(int m=0; m<i; m++)
         niz[m]->citaj();
    }


};
Potpis
DrekavaC
Re: problem sa izvedenom klasom 29.08.2007. u 16:45 · pre 233 meseca
izmenjeno 1 put, poslednji put yaelo 29.08.2007. u 18:21
  1. yaelo29.08.2007. u 18:21zapis iz teksta poruke
#2
Puno toga ti ne valja sa klasom Polica. Zašto je nasledjuješ iz Knjiga. Polica nije Knjiga. Umesto Knjiga** niz koristi std::vector<Knjiga>. Zatim funkcija Brisi oslobadja samo niz koji je ustvari niz pointera. A šta je sa pointerima u nizu niz.Takodje imaš problem sa funkcijom kreiraj. Probaj ovako:

Code:

class Polica {
    std::vector<Knjiga> niz;

public:
    Polica(int k=10) : niz (k) {}

   void kreiraj() {
        for (std::vector<Knjiga>::iterator iter = niz.begin(); iter < niz.end(); ++iter) {
            iter->citaj();
        }
    }
};
Re: problem sa izvedenom klasom 30.08.2007. u 19:37 · pre 233 meseca
izmenjeno 1 put, poslednji put X Files 02.09.2007. u 21:36
  1. X Files02.09.2007. u 21:36zapis iz teksta poruke
#3
Evo izmenio sam malo na svoju ruku klasu Polica i funkciju kreiraj, da li sada postoji neki nacin da napravim funkciju(ispisi) koja ce izlistati niz knjiga....
aauuuuu bre zbuni me sad sa tim vektorima zelen sam ja za to al proucicu.
Code:

//polica.h
#include "knjiga.h"

class Polica{
    int brp;

public:
    Knjiga* nz;
    Polica(int k=10)
    { nz=new Knjiga [brp=k]; }
    ~Polica() {brisi();}

    int kreiraj(int m) {
     Knjiga niz[m];
     for(int i=0; i<m; i++)
         niz[i].citaj();
    }

    

    void brisi() {delete []nz;}

};


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]

Sad će ti možda neko i pogledati kod...
Potpis
DrekavaC
Re: problem sa izvedenom klasom 03.09.2007. u 10:29 · pre 233 meseca #5
evo ti predlog resenja (ako sam dobro razumeo problem) u atachment-u.

imas klasu CBook koja opisuje knjigu i CBookshelf koja predstavlja policu koja sadrzi knjige.
ne bi trebalo da kreiras knjigu(e) u okviru police, niti da se mucis sa dinamickom alokacijom (koristi STL, sigurnije je i jednostavnije).
pogledaj sors, pa pitaj ako ti nesto nije jasno

poz
Potpis
ja sam panker sa diplomom kod moje mame...
Re: problem sa izvedenom klasom 04.09.2007. u 02:33 · pre 233 meseca #6
Skapirao sam o cemu se radi i ovo bi moglo da bude resenje, hvala na pomoci!!! Ja sam pokusavao da Policu realizujem kao niz objekata tipa Knjiga ( ono niz[n] ) nekako mi je to najlogicnije da uradim pa cu i pored ovog tvog resenja probati da to napravim sa nizom, mada se i ne trudim fanaticno ali bice valjda za par dana :) u svakom slucaju svaka pomoc je opet dobrodosla... pozdrav.
Potpis
DrekavaC
Re: problem sa izvedenom klasom 07.09.2007. u 18:09 · pre 233 meseca
izmenjeno 1 put, poslednji put drekavac007 07.09.2007. u 18:27
  1. drekavac00707.09.2007. u 18:27zapis iz teksta poruke
#7
resenje:
Code:
   //main.cpp
#include "polica.h"
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
    int f=10;
    int ff=8;
    Polica e(f);
    Polica ee(ff);
  
    e.pisi();
    ee.pisi();
}

Code:
   //knjiga.h
class Knjiga {
    int x;
public:
    Knjiga(int xx=0) {x=xx;}
    int prikaziX() const {return x;}
    void citaj();
    void pisi() const;
};

Code:
   //knjiga.cpp
#include "knjiga.h"
#include <iostream>
using namespace std;

void Knjiga::pisi() const{
    cout<<x<<endl;
}

void Knjiga::citaj() {
    int x1;
    cout<<"broj knjige:";
    cin>>x1;
    x=x1;
}

Code:
   //polica.h
#include "knjiga.h"

class Polica{
    int brp;

public:
    Polica();
    Polica(int n);

    int get_brp(void) { return brp; }    

    void pisi();

};

Code:
   //polica.cpp
#include "polica.h"
#include <iostream>

Polica::Polica() {
   brp=1;
   niz=new Knjiga[0];
   niz[0]=0;
}

Polica::Polica(int n) {
   brp=n;
   niz=new Knjiga[n];
   for(int i=0; i<n; i++)
      niz[i].citaj;
}

void Polica::pisi() {
   int d=brp;
   for(int i=0; i<d; i++)
      niz[i].pisi();
}

klasa nije ni trebala biti izvedena...
fali destruktor al me mrzi :)
moze lock...
Potpis
DrekavaC
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme