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

neka moja klasa i vektor

[es] :: C/C++ programiranje :: neka moja klasa i vektor

[ Pregleda: 5522 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

buha18
mali mirkec
vratisinec

Član broj: 57193
Poruke: 161
*.net.t-com.hr.



+10 Profil

icon neka moja klasa i vektor13.02.2006. u 17:57 - pre 220 meseci
imam jednu moju klasu

Code:

class buha{    
private : ;      
public: void napravi(int brojac);         
        void ispisi();
        int velicina;
                int inteligencija;};


tu klasu mogu spremati u polje kao objekt.
Code:

buha polje[100];

polje[0].velicina=5;
polje[0].inteligencija=141;



da li mogu kako spremati sve te elemente u vektor i poslije taj vektor sortirati prema nekim atributima klase (velicina, inteligencija)?





>>Mirkec<<
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.verat.net.



+9 Profil

icon Re: neka moja klasa i vektor13.02.2006. u 21:08 - pre 220 meseci
Mozes da sortiras i uredis niz i bez vectora. Funckija qsort kao argument prima i pokazivac na funkciju za poredjenje dva elementa iz niza... Upotrebi nju ako je do sada nisi koristio.
 
Odgovor na temu

buha18
mali mirkec
vratisinec

Član broj: 57193
Poruke: 161
*.net.t-com.hr.



+10 Profil

icon Re: neka moja klasa i vektor14.02.2006. u 14:00 - pre 220 meseci
moze primjer sa mojim poljem u kojem se nalazi klasa buha?

hvala
>>Mirkec<<
 
Odgovor na temu

idb
Ivan Bulic
Beograd

Član broj: 4436
Poruke: 402



Profil

icon Re: neka moja klasa i vektor15.02.2006. u 21:00 - pre 220 meseci
Cbuha.h:
Code:

// File: Cbuha.h
#ifndef __CBUHA_H__
#define __CBUHA_H__
class Cbuha{    
    private:
        int velicina;
        int inteligencija;
    public: 
        //!  Constructor 
        Cbuha(int v=0, int i=0):velicina(v),inteligencija(i){}
        //!  Copy Constructor
        Cbuha(const Cbuha& p);
        //!  Overloading = (operator dodele)
        Cbuha& operator=(const Cbuha& p);
        ~Cbuha(){}
        //!  inspector member functions 
        inline int I() const { return inteligencija;}
        inline int V() const { return velicina;}
        //!  mutator member functions 
        inline void I(int i) { inteligencija = i; }
        inline void V(int v) { velicina = v; }
        //!  tvoje f-je 
        void napravi(int brojac);  //
        void ispisi();             //
};
#endif // __CBUHA_H__


Cbuha.cpp:
Code:

// file: Cbuha.cpp
#include "Cbuha.h"
Cbuha::Cbuha(const Cbuha& cb){
    velicina      = cb.velicina;
    inteligencija = cb.inteligencija;
}
Cbuha& Cbuha::operator=(const Cbuha& cb){
    if (this != &cb) {
        velicina      = cb.velicina;
        inteligencija = cb.inteligencija;
    }
    return *this;
}

main_buha.cpp:
Code:

// Test program: main_buha.cpp
#include <cstdlib>
#include <iostream>
#include <vector>
#include "Cbuha.h"
using namespace std;

bool compare_i(const Cbuha& x, const Cbuha& y){ return x.I()<y.I(); }
bool compare_v(const Cbuha& x, const Cbuha& y){ return x.V()<y.V(); }

int main(int argc, char *argv[]){
    vector<Cbuha> vbuha;
     // napravi vector od "slucajnih" vrednosti
    srand( time(NULL) );
    for(int i = 0; i < 10; i++ ) vbuha.push_back(Cbuha(rand(),rand()));
    // Print pre sortiranja:
    cout<<"\nPrint pre sortiranja:\n";
    for (vector<Cbuha>::iterator it = vbuha.begin(); it!=vbuha.end(); ++it)
        cout << it->I()<<"\t"<< it->V() << endl;
    // Sortiranje po: "inteligencija"
    sort(vbuha.begin(), vbuha.end(), compare_i);
    cout<<"\nPrint Posle sortiranja po 'inteligencija':\n";
    for (vector<Cbuha>::iterator it = vbuha.begin(); it!=vbuha.end(); ++it)
        cout << it->I()<<"\t"<< it->V() << endl;    
    // Sortiranje po: "velicina"
    sort(vbuha.begin(), vbuha.end(), compare_v);
    cout<<"\nPrint Posle sortiranja po 'velicina':\n";
    for (vector<Cbuha>::iterator it = vbuha.begin(); it!=vbuha.end(); ++it)
        cout << it->I()<<"\t"<< it->V() << endl;        
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

 
Odgovor na temu

brcha
Filip Brčić
Beograd, Serbia

Član broj: 440
Poruke: 436

Jabber: brcha@kdetalk.net
ICQ: 40994923
Sajt: brcha.com


+2 Profil

icon Re: neka moja klasa i vektor15.02.2006. u 21:16 - pre 220 meseci
@idb:

Lep & cist kod Sve pohvale!

Samo imam jednu zamerku...

Citat:
idb:
main_buha.cpp:
Code:

...
int main(int argc, char *argv[]){
...
    system("PAUSE");
    return EXIT_SUCCESS;
}


Zahvaljujuci ovom pozivu system("PAUSE"); tvoj kod je upravo postao nekompatibilan sa ne-DOS/Windows sistemima. Nije li bolje da si uradio nesto tipa

Code:

cout<<"Press any key to continue..."<<endl;
cin.flush();
cin.get();


sto bi uradilo isto, a omogucilo da kod radi na svim operativnim sistemima?

Poz
Brcha

PS: Jel ovo pisano sa DevC++? Cini mi se da on ima tendenciju da na main dodaje system("PAUSE")?
... and the aliens sent an android down to earth, to slow down mankind's development
... and they named it Bill Gates.
 
Odgovor na temu

idb
Ivan Bulic
Beograd

Član broj: 4436
Poruke: 402



Profil

icon Re: neka moja klasa i vektor15.02.2006. u 21:29 - pre 220 meseci
Citat:
tvoj kod je upravo postao nekompatibilan sa ne-DOS/Windows sistemima.
U paravu si, ali posto zasad radim samo na Windows sistemima, nisam morao da pazim. Tvoj predlog ispravlja taj nedostatak.
Citat:
Jel ovo pisano sa DevC++?
Da, kada otvoris novi projekt on generise kostur programa, sa takvim zavrsetkom.
Ranije verzije Dev-Cpp su stavljale return 0; ali kako je EXIT_SUCCESS=0, svodi se na isto.
idb
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Re: neka moja klasa i vektor15.02.2006. u 22:02 - pre 220 meseci
Boze sveti, sta je to cijela biblioteka... ?!!?

Evo ti jednostavnije:
Code:
vector<buha> niz;
bool operator <( const buha& left, const buha& right );
/* neka ti operator vraca [blue]true[/blue] kad je "left" manji od "right" inace [blue]false[/blue] */ 

// i sortiras 
std::sort( niz.begin(), niz.end() );

Postoje naravno i drugi nacini. Jedan je da napravis funkciju koja zamjenjuje postojanje operatora i prosljedis je sortu kao treci parametar, svodi se na isto.
 
Odgovor na temu

idb
Ivan Bulic
Beograd

Član broj: 4436
Poruke: 402



Profil

icon Re: neka moja klasa i vektor16.02.2006. u 09:15 - pre 220 meseci
Citat:
bool operator <( const buha& left, const buha& right );

Kako ce kompajler shvatiti ovo?
Klasa Cbuha ima dva clana velicina i inteligencija, da li da sortira po prvom clanu ili drugom?
idb
 
Odgovor na temu

brcha
Filip Brčić
Beograd, Serbia

Član broj: 440
Poruke: 436

Jabber: brcha@kdetalk.net
ICQ: 40994923
Sajt: brcha.com


+2 Profil

icon Re: neka moja klasa i vektor16.02.2006. u 09:49 - pre 220 meseci
Citat:
idb: Kako ce kompajler shvatiti ovo?
Klasa Cbuha ima dva clana velicina i inteligencija, da li da sortira po prvom clanu ili drugom?
idb


Pa, može da iskoristi parametar inteligencija za odlučivanje po čemu da sortira
... and the aliens sent an android down to earth, to slow down mankind's development
... and they named it Bill Gates.
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Re: neka moja klasa i vektor16.02.2006. u 10:39 - pre 220 meseci
Citat:
idb: Kako ce kompajler shvatiti ovo?
Klasa Cbuha ima dva clana velicina i inteligencija, da li da sortira po prvom clanu ili drugom?
idb

Imam neki blagi osjecaj da ti nista ne kuzis...
Pa to je samo deklaracija, treba operator definirat. Brige mene po cemu ce on sortirat, glavno da postuje interface i vrati true kad je livi manji od desnog.
 
Odgovor na temu

idb
Ivan Bulic
Beograd

Član broj: 4436
Poruke: 402



Profil

icon Re: neka moja klasa i vektor16.02.2006. u 10:52 - pre 220 meseci
Citat:
Pa to je samo deklaracija, treba operator definirat
Da li bi hteo da napises definiciju tog operatora da bih te shvatio?
idb
 
Odgovor na temu

B.Lale
Novi Sad

Član broj: 23261
Poruke: 23
..mtsns-ns.customer.sbb.co.yu.

ICQ: 209643096


Profil

icon Re: neka moja klasa i vektor16.02.2006. u 19:58 - pre 220 meseci
Ja bih to onda ovako:
Code:
friend int operator <( const Cbuha& left, const Cbuha& right) {
    return (left.inteligencija < right.inteligencija ? 1 : 0);}
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Re: neka moja klasa i vektor16.02.2006. u 20:34 - pre 220 meseci
Citat:
B.Lale: Ja bih to onda ovako:
Code:
friend int operator <( const Cbuha& left, const Cbuha& right) {
return (left.inteligencija < right.inteligencija ? 1 : 0);}

Code:
bool operator <( const buha& l, const buha& r )
{
       return l.inteligencija < r.inteligencija;
};

Nepotrebno je stavljati operator kao prijateljsku funkciju jer su clanovi javni.
 
Odgovor na temu

B.Lale
Novi Sad

Član broj: 23261
Poruke: 23
..mtsns-ns.customer.sbb.co.yu.

ICQ: 209643096


Profil

icon Re: neka moja klasa i vektor16.02.2006. u 20:48 - pre 220 meseci
Mislio sam na klasu koju je idb napisao (Cbuha.h), a tamo su podaci clanovi privatni!
 
Odgovor na temu

idb
Ivan Bulic
Beograd

Član broj: 4436
Poruke: 402



Profil

icon Re: neka moja klasa i vektor17.02.2006. u 09:18 - pre 220 meseci
Mi ovde naveliko diskutujemo, jedino se pokretac teme vise ne oglasava.
Kada sam se ukljucio u temu vodilje su mi bile sledece:

1. Naslov:
Citat:
neka moja klasa i vektor
Klasa namece potrebu za primenom objektno orijentisanog koncepta jezika C++, a vektor upotrebu STL klase vector.
Zbog objektnog pristupa data menbers su privatni clanovi kao sto je to B.Lale i primetio (covek procitao kod)

2. Sta program treba da radi:
Citat:
buha18:
da li mogu kako spremati sve te elemente u vektor i poslije taj vektor sortirati prema nekim atributima klase (velicina, inteligencija)?

Ovo znaci da primer treba da omoguci sortiranje vektora po bilo kom clanu.

3. Moje shvatanje da su pokretacu tema klasa i vektor oblasti gde se jos uvek ne snalazi dobro, da da moj prilog treba da bude veoma jasan.
Izgleda da se nekima cini da je preobimna:
Citat:
NrmMyth:
Boze sveti, sta je to cijela biblioteka... ?!!?
i predlaze jednostavnije resenje koje koristi overloading operatora "<"
Citat:
NrmMyth:
Code:

bool operator <( const buha& l, const buha& r )
{
       return l.inteligencija < r.inteligencija;
};

Koje radi isto sto i funkcija koju sam ja napisao
Code:
bool compare_i(const Cbuha& x, const Cbuha& y){ return x.I()<y.I(); }

Sta je jednostavnije - svako nek odluci, ali u svakom slucaju jedna funcija poredjenja nije dovoljna da se klasa Cbuha sortira po oba clana.

Citat:

Imam neki blagi osjecaj da ti nista ne kuzis...
Pa to je samo deklaracija, treba operator definirat. Brige mene po cemu ce on sortirat, glavno da postuje interface i vrati true kad je livi manji od desnog.

Stvarno ne kuzim kako cu tvoj preoptereceni opreator "<" (u obliku kako si ga napisao), moci da iskoristim za sortiranje po clanu velicina (a da ne pisem novi) - u tom delu se ti i ja ne razumemo.
idb
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Re: neka moja klasa i vektor17.02.2006. u 11:20 - pre 220 meseci
Izvini idb ako sam povrijedio tvoj ego, o cemu svjedoci prethodni filozifski post.

Hoce li on sortirat po inteligenciji ili velicini ili pak po jednom i drugom zajedno, to mene nije briga. Dao sam mu jednostavo objasnjenje njegova problema, bez nepotrebnih informacija. Necu mu ja pisat sve, neka sam uradi.
A opet nema smisla pomagati mu ako ga nema...
 
Odgovor na temu

[es] :: C/C++ programiranje :: neka moja klasa i vektor

[ Pregleda: 5522 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

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