Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

Još kolokvija?
WWW:
Idite na 1, 2  Sljedeće
Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Računarski praktikum 1
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
tomitza
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 28. 11. 2008. (19:50:48)
Postovi: (58)16
Sarma = la pohva - posuda
= 7 - 2

PostPostano: 12:59 sri, 9. 6. 2010    Naslov: Još kolokvija? Citirajte i odgovorite

Da li negdje postoji još (osim onih na stranici kolegija) kolokvija od prijasnjih godina?
Mozda bi bila dobra ideja da se odsad na stranici kolegija nalaze svi prijasnji kolokviji, skoro svi kolegiji imaju tako.

Hvala
Da li negdje postoji još (osim onih na stranici kolegija) kolokvija od prijasnjih godina?
Mozda bi bila dobra ideja da se odsad na stranici kolegija nalaze svi prijasnji kolokviji, skoro svi kolegiji imaju tako.

Hvala
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Tindariel
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 03. 12. 2008. (00:49:03)
Postovi: (71)16
Spol: žensko
Sarma = la pohva - posuda
= 2 - 0
Lokacija: Zagreb

PostPostano: 13:04 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

Asistent Petričević je rekao da to ne bi imalo smisla budući da su uvijek jako slični zadaci pa bi onda ljudi učili napamet rješenja. Ako ima, ima negdje na forumu :)
Asistent Petričević je rekao da to ne bi imalo smisla budući da su uvijek jako slični zadaci pa bi onda ljudi učili napamet rješenja. Ako ima, ima negdje na forumu Smile


[Vrh]
Korisnički profil Pošaljite privatnu poruku
tomitza
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 28. 11. 2008. (19:50:48)
Postovi: (58)16
Sarma = la pohva - posuda
= 7 - 2

PostPostano: 15:34 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

Pa to je i bila poanta mojeg pitanja, dobiti jos barem koji slican zadatak, jer na jednom ne mogu dovoljno dobro nauciti...
Pa to je i bila poanta mojeg pitanja, dobiti jos barem koji slican zadatak, jer na jednom ne mogu dovoljno dobro nauciti...
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Cobs
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 01. 2008. (13:32:15)
Postovi: (206)16
Spol: muško
Sarma = la pohva - posuda
26 = 40 - 14
Lokacija: Geto

PostPostano: 16:15 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

beskoristan post
beskoristan post




Zadnja promjena: Cobs; 16:45 sri, 9. 6. 2010; ukupno mijenjano 1 put.
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
Gost






PostPostano: 16:34 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

Jako lijepo od tebe što si se potrudio tražit po forumu :) ali jedno od ovog što si stavio nam je taj jedini koji i imamo na stranici kolegija, a ova druga dva su gradivo prvog kolokvija :(
Jako lijepo od tebe što si se potrudio tražit po forumu Smile ali jedno od ovog što si stavio nam je taj jedini koji i imamo na stranici kolegija, a ova druga dva su gradivo prvog kolokvija Sad


[Vrh]
Cobs
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 01. 2008. (13:32:15)
Postovi: (206)16
Spol: muško
Sarma = la pohva - posuda
26 = 40 - 14
Lokacija: Geto

PostPostano: 16:45 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

[quote="Anonymous"]Jako lijepo od tebe što si se potrudio tražit po forumu :) ali jedno od ovog što si stavio nam je taj jedini koji i imamo na stranici kolegija, a ova druga dva su gradivo prvog kolokvija :([/quote]

Sorry, nisam ni gledal kaj stavljam... jedino ne kužim asistenta to da kaže da bi rješenja mogli učit napamet... bar kaj se nasljeđivanja tiče, tu ga može zakomplicirat... a i velikoj većini to nije jasno nakon samih vježbi.
Anonymous (napisa):
Jako lijepo od tebe što si se potrudio tražit po forumu Smile ali jedno od ovog što si stavio nam je taj jedini koji i imamo na stranici kolegija, a ova druga dva su gradivo prvog kolokvija Sad


Sorry, nisam ni gledal kaj stavljam... jedino ne kužim asistenta to da kaže da bi rješenja mogli učit napamet... bar kaj se nasljeđivanja tiče, tu ga može zakomplicirat... a i velikoj većini to nije jasno nakon samih vježbi.


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
konjina
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 04. 2010. (21:55:18)
Postovi: (2C)16
Sarma = la pohva - posuda
= 19 - 14
Lokacija: po livadama i šumama

PostPostano: 17:02 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

http://degiorgi.math.hr/forum/viewtopic.php?t=9541&postdays=0&postorder=asc&&start=20


evo još jedan....



na drugoj stranici.....


ako netko riješi skroz na dnu stranice 2. zadatak nek mi se javiiiii
http://degiorgi.math.hr/forum/viewtopic.php?t=9541&postdays=0&postorder=asc&&start=20


evo još jedan....



na drugoj stranici.....


ako netko riješi skroz na dnu stranice 2. zadatak nek mi se javiiiii



_________________
NJIIIIHAAA
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Cobs
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 01. 2008. (13:32:15)
Postovi: (206)16
Spol: muško
Sarma = la pohva - posuda
26 = 40 - 14
Lokacija: Geto

PostPostano: 17:41 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

evo drugi bi nekak ovak išo:

[code:1]
struct racun {

vector< pair< string, int > > pica;

racun( string ime_pica, int cijena=1 ){
pair< string, int > a;
a.first = ime_pica;
a.second = cijena;
pica.push_back( a );
}

racun& operator+( const racun& X ){

for( int i = 0; i < X.pica.size(); i++ ){
int j;
for( j = 0; j < pica.size(); j++ )
if( X.pica[i].first == pica[j].first ){
pica[j].second+=X.pica[i].second; break;
}
if( j == pica.size() ){
pair< string, int > a;
a.first = X.pica[i].first;
a.second = X.pica[i].second;
pica.push_back( a );
}
}

return *this;
}
racun& operator-( const racun& X ){

vector< pair< string, int> > pi_2;

for( int i = 0; i < X.pica.size(); i++ )
for( int j = 0; j < pica.size(); j++ )
if( X.pica[i].first == pica[j].first ){
pica[j].second-=X.pica[i].second; break;
}

for( int i = 0; i < pica.size(); i++ )
if( pica[i].second > 0 ) pi_2.push_back( pica[i] );

pica.clear();

for( int i = 0; i < pi_2.size(); i++ )
pica.push_back( pi_2[i] );

return *this;

}

friend ostream& operator<<( ostream& s, const racun& X){
set< pair< string, int > > skup;
for( int i = 0;i < X.pica.size(); i++ )
skup.insert( X.pica[i] );
for( set< pair< string, int > >::iterator it = skup.begin(); it != skup.end(); it++ )
cout << it -> first << " " << it -> second << endl;

return s;

}

};

[/code:1]

nisam isprobavo, možda ima nekih grešaka, ali to ti je u principu to!
evo drugi bi nekak ovak išo:

Kod:

            struct racun {
                   
                     vector< pair< string, int > > pica;

                     racun( string ime_pica, int cijena=1 ){
                             pair< string, int > a;
                             a.first = ime_pica;
                             a.second = cijena;
                             pica.push_back( a );   
                     }

                      racun& operator+( const racun& X ){

                             for( int i = 0; i < X.pica.size(); i++ ){
                                 int j;
                                 for( j = 0; j < pica.size(); j++ )
                                       if( X.pica[i].first == pica[j].first ){
                                         pica[j].second+=X.pica[i].second; break;
                                       }
                                 if( j == pica.size() ){
                                      pair< string, int > a;
                                      a.first = X.pica[i].first;
                                      a.second = X.pica[i].second;
                                      pica.push_back( a );   
                                 }                                     
                             }

                              return *this;
                      }
                       racun& operator-( const racun& X ){

                            vector< pair< string, int> > pi_2;   

                            for( int i = 0; i < X.pica.size(); i++ )
                                 for( int j = 0; j < pica.size(); j++ )
                                       if( X.pica[i].first == pica[j].first ){
                                         pica[j].second-=X.pica[i].second; break;
                                       }
                             
                             for( int i = 0; i < pica.size(); i++ )
                                 if( pica[i].second > 0 )  pi_2.push_back( pica[i] );
     
                             pica.clear();

                             for( int i = 0; i <  pi_2.size(); i++ )
                                  pica.push_back( pi_2[i] );

                             return *this;

                       }

                       friend ostream& operator<<( ostream& s, const racun& X){
                           set< pair< string, int > > skup;
                                 for( int i = 0;i < X.pica.size(); i++ )
                                    skup.insert( X.pica[i] );
                                 for( set< pair< string, int > >::iterator it = skup.begin(); it != skup.end(); it++ )
                                      cout << it -> first << "    " << it -> second << endl;

                                 return s;
 
                    }

            };

 


nisam isprobavo, možda ima nekih grešaka, ali to ti je u principu to!




Zadnja promjena: Cobs; 18:39 sri, 9. 6. 2010; ukupno mijenjano 5 put/a.
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
konjina
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 04. 2010. (21:55:18)
Postovi: (2C)16
Sarma = la pohva - posuda
= 19 - 14
Lokacija: po livadama i šumama

PostPostano: 17:45 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

fala...ja sam pokušao malo drukčijim pristupom....



#include <iostream>
#include <set>
#include <list>

using namespace std;

class pice {
public:
string ime;
int broj;
pice(string IME, int BROJ=1) {ime=IME; broj=BROJ; }
friend bool operator< (const pice& a, const pice& b);
};


bool operator< (const pice& a, const pice& b)
{if (a.ime<b.ime) return true; else return false; }


class racun
{public:
list<pice*> niz;
racun(string IME, int BROJ=1)
{ pice P(IME,BROJ); //zašto je srao prije
niz.push_back(&P);}


friend racun& operator+ (racun& a, const pice &b);
friend racun& operator- (racun&a, const pice &b);
friend ostream& operator<< (ostream &f, racun& a);


};







racun& operator+ (racun& a, pice& b)
{ list<pice*>:: iterator si; int istina=1;
for(si=a.niz.begin(); si!=a.niz.end(); si++)
if( (*(*si)).ime ==b.ime) (*si)->broj+=b.broj;

if (istina==1) a.niz.push_back(&b);

return a;
};


racun& operator- (racun& a, pice& b)
{ list<pice*>:: iterator si; int istina=1;
for(si=a.niz.begin(); si!=a.niz.end(); si++)
if( (*(*si)).ime ==b.ime)
{ if ((*si)->broj>=b.broj) (*si)->broj-=b.broj;
if ((*si)->broj<b.broj) a.niz.erase(si);
}
for(si=a.niz.begin(); si!=a.niz.end(); si++)
if( (*(*si)).broj ==0) a.niz.erase(si);

}


ostream& operator<< (ostream &f, racun& a)
{ list<pice *>:: iterator si; int istina=1;
for(si=a.niz.begin(); si!=a.niz.end(); si++)
f<<*(*si)->ime<<" "<<(*si)->broj<<endl;
return f;
}






int main (void)


{ racun tangenta("kava s mlijekom",2);
racun birc("kava",2);
list<pice *>:: iterator si;
cout<<tangenta<<birc;



system("pause");
return 0;





}





i počne mi nebuloze ispisivat.... pa ako se nekom da pogledat kod, bio bih zahvalan...

[size=9][color=#999999]Added after 40 seconds:[/color][/size]

problem se stvara kod ispisa mislim
fala...ja sam pokušao malo drukčijim pristupom....



#include <iostream>
#include <set>
#include <list>

using namespace std;

class pice {
public:
string ime;
int broj;
pice(string IME, int BROJ=1) {ime=IME; broj=BROJ; }
friend bool operator< (const pice& a, const pice& b);
};


bool operator< (const pice& a, const pice& b)
{if (a.ime<b.ime) return true; else return false; }


class racun
{public:
list<pice*> niz;
racun(string IME, int BROJ=1)
{ pice P(IME,BROJ); //zašto je srao prije
niz.push_back(&P);}


friend racun& operator+ (racun& a, const pice &b);
friend racun& operator- (racun&a, const pice &b);
friend ostream& operator<< (ostream &f, racun& a);


};







racun& operator+ (racun& a, pice& b)
{ list<pice*>:: iterator si; int istina=1;
for(si=a.niz.begin(); si!=a.niz.end(); si++)
if( (*(*si)).ime ==b.ime) (*si)→broj+=b.broj;

if (istina==1) a.niz.push_back(&b);

return a;
};


racun& operator- (racun& a, pice& b)
{ list<pice*>:: iterator si; int istina=1;
for(si=a.niz.begin(); si!=a.niz.end(); si++)
if( (*(*si)).ime ==b.ime)
{ if ((*si)→broj>=b.broj) (*si)→broj-=b.broj;
if ((*si)→broj<b.broj) a.niz.erase(si);
}
for(si=a.niz.begin(); si!=a.niz.end(); si++)
if( (*(*si)).broj ==0) a.niz.erase(si);

}


ostream& operator<< (ostream &f, racun& a)
{ list<pice *>:: iterator si; int istina=1;
for(si=a.niz.begin(); si!=a.niz.end(); si++)
f<<*(*si)→ime<<" "<<(*si)→broj<<endl;
return f;
}






int main (void)


{ racun tangenta("kava s mlijekom",2);
racun birc("kava",2);
list<pice *>:: iterator si;
cout<<tangenta<<birc;



system("pause");
return 0;





}





i počne mi nebuloze ispisivat.... pa ako se nekom da pogledat kod, bio bih zahvalan...

Added after 40 seconds:

problem se stvara kod ispisa mislim



_________________
NJIIIIHAAA
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Cobs
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 01. 2008. (13:32:15)
Postovi: (206)16
Spol: muško
Sarma = la pohva - posuda
26 = 40 - 14
Lokacija: Geto

PostPostano: 17:52 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

[quote]
racun(string IME, int BROJ=1)
{
pice* P = new pice( IME, BROJ );

niz.push_back(P);

}
~racun(){

for( list<pice*>::iterator it = niz.begin(); it != niz.end(); it++ )
delete *it;

}
[/quote]

sad radi, s tim da u ispisu si tam slučajno na jedno mjesto stavio jednu * previše.

Naravno ak očeš imat ovakve vanjske ( friend ) operatore i pointere u klasi racun onda moraš nadodat još copy-constructor i operator=
Citat:

racun(string IME, int BROJ=1)
{
pice* P = new pice( IME, BROJ );

niz.push_back(P);

}
~racun(){

for( list<pice*>::iterator it = niz.begin(); it != niz.end(); it++ )
delete *it;

}


sad radi, s tim da u ispisu si tam slučajno na jedno mjesto stavio jednu * previše.

Naravno ak očeš imat ovakve vanjske ( friend ) operatore i pointere u klasi racun onda moraš nadodat još copy-constructor i operator=


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
konjina
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 04. 2010. (21:55:18)
Postovi: (2C)16
Sarma = la pohva - posuda
= 19 - 14
Lokacija: po livadama i šumama

PostPostano: 18:02 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

možeš malo objasnit zašto je to bilo potrebno...nisam baš skužio....



i kakve copy konstruktore...jel to ovo???

[size=9][color=#999999]Added after 33 seconds:[/color][/size]

i zašto bih morao operator = definirat?
možeš malo objasnit zašto je to bilo potrebno...nisam baš skužio....



i kakve copy konstruktore...jel to ovo???

Added after 33 seconds:

i zašto bih morao operator = definirat?



_________________
NJIIIIHAAA
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Thor
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 24. 04. 2009. (10:57:50)
Postovi: (15)16
Sarma = la pohva - posuda
= 1 - 0

PostPostano: 18:05 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

evo konjino i ja sam ti rijesio

#include<iostream>
#include<map>
#include<string>
#include<set>
using namespace std;


class racun{
public:

map<string,int> mapa;

racun(string ime,int n=1){
map<string,int> M;
M[ime]=n;
mapa=M;
}

friend racun operator+(racun A,racun B);
friend racun operator-(racun A,racun B);

friend ostream& operator<<(ostream& f,racun A);

};

racun operator+(racun A,racun B){
int fnd=1;
map<string,int>::iterator mi,ni;

for(mi=B.mapa.begin();mi!=B.mapa.end();++mi){
for(ni=A.mapa.begin();ni!=A.mapa.end();++ni)
if((*mi).first==(*ni).first){ A.mapa[(*mi).first]=(*mi).second+(*ni).second; fnd=0; }
if(fnd) A.mapa[(*mi).first]=(*mi).second;
}
return A;
}

racun operator-(racun A,racun B){

map<string,int>::iterator mi,ni;

for(mi=B.mapa.begin();mi!=B.mapa.end();++mi)
for(ni=A.mapa.begin();ni!=A.mapa.end();++ni)
if((*mi).first==(*ni).first) A.mapa[(*mi).first]=(*ni).second-(*mi).second;


mi = A.mapa.begin();
while( mi != A.mapa.end() ) {
if( (*mi).second <= 0 ) {
ni = mi; ni++;
A.mapa.erase( mi );
mi = ni;
}
else mi++;
}

return A;
}

ostream& operator<<(ostream& f,racun A){

set<string> HAHA;
map<string,int>::iterator ni;
set<string>::iterator hi;
for(ni=A.mapa.begin();ni!=A.mapa.end();++ni)
HAHA.insert((*ni).first);

for(hi=HAHA.begin();hi!=HAHA.end();++hi)
cout<<(*hi)<<" "<<A.mapa[*hi]<<endl;

}

int main(){


racun A("Votka",100);
racun B("Jack Daniels",200);
racun C("Jack Daniels", 300);
racun D("Breezer",150);
racun E("Campari",100);
D=D+E+A;
A=A+B;
A=A-C;

cout<<A;
cout<<endl;
cout<<D;
cout<<endl;
cout<<A+D;
system("pause");
return 0;
}
evo konjino i ja sam ti rijesio

#include<iostream>
#include<map>
#include<string>
#include<set>
using namespace std;


class racun{
public:

map<string,int> mapa;

racun(string ime,int n=1){
map<string,int> M;
M[ime]=n;
mapa=M;
}

friend racun operator+(racun A,racun B);
friend racun operator-(racun A,racun B);

friend ostream& operator<<(ostream& f,racun A);

};

racun operator+(racun A,racun B){
int fnd=1;
map<string,int>::iterator mi,ni;

for(mi=B.mapa.begin();mi!=B.mapa.end();++mi){
for(ni=A.mapa.begin();ni!=A.mapa.end();++ni)
if((*mi).first==(*ni).first){ A.mapa[(*mi).first]=(*mi).second+(*ni).second; fnd=0; }
if(fnd) A.mapa[(*mi).first]=(*mi).second;
}
return A;
}

racun operator-(racun A,racun B){

map<string,int>::iterator mi,ni;

for(mi=B.mapa.begin();mi!=B.mapa.end();++mi)
for(ni=A.mapa.begin();ni!=A.mapa.end();++ni)
if((*mi).first==(*ni).first) A.mapa[(*mi).first]=(*ni).second-(*mi).second;


mi = A.mapa.begin();
while( mi != A.mapa.end() ) {
if( (*mi).second ⇐ 0 ) {
ni = mi; ni++;
A.mapa.erase( mi );
mi = ni;
}
else mi++;
}

return A;
}

ostream& operator<<(ostream& f,racun A){

set<string> HAHA;
map<string,int>::iterator ni;
set<string>::iterator hi;
for(ni=A.mapa.begin();ni!=A.mapa.end();++ni)
HAHA.insert((*ni).first);

for(hi=HAHA.begin();hi!=HAHA.end();++hi)
cout<<(*hi)<<" "<<A.mapa[*hi]<<endl;

}

int main(){


racun A("Votka",100);
racun B("Jack Daniels",200);
racun C("Jack Daniels", 300);
racun D("Breezer",150);
racun E("Campari",100);
D=D+E+A;
A=A+B;
A=A-C;

cout<<A;
cout<<endl;
cout<<D;
cout<<endl;
cout<<A+D;
system("pause");
return 0;
}



_________________
Devil's playground
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Cobs
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 01. 2008. (13:32:15)
Postovi: (206)16
Spol: muško
Sarma = la pohva - posuda
26 = 40 - 14
Lokacija: Geto

PostPostano: 18:35 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

kad radiš sa pointerima u klasi ( dinamički alociranom memorijom ), trebaš također napravit kopy-konstruktor i operator=
Ne da mi se to baš sad objašnjavat, o tome imaš dosta na netu.
Nisam baš dobro pogledao, ali sve tvoje funkcije primaju referencu, pa kopy konstruktor čak i nije potreban, ali operator= ti treba jer ti inače niš ne bu radilo...

zašto: recimo da ti funkcije rade kako treba ( npr. operator+ )
i stavimo ovaj slučaj:
[code:1] tangenta = birc + tangenta;[/code:1]

po tvojem operatoru+ bit će vraćena referenca na birc ( jer vraća referencu na prvi element ). A tu si recimo izjednačio tangentu sa vraćenom referencom na birc.

Što će sada u sebi imati tangenta? listu pokazivača na piće. Ali koje pokazivače? Ti nisi napisao svoj operator= i kompajler će ti ga sam napravit... kako? tak da jednostavno prekopira sve elemente iz jedne strukture u drugu, u ovom slučaju konkretno će svi elementi iz racuna:

birc+tangenta

biti prekopirani u tangentu, jedan po jedan. A što se u biti kopira? Pointeri, tj. adrese jer su adrese vrijednosti pointera, pa ćeč imati klasu

tangenta sa listom pokazivača s vrjednostima istim kao i vrijednostima liste pokazivača klase birc. S obzirom da su te vrijednosti adrese tebi će i tangenta i birc pokazivati na iste stvari, tj. na ista pića i ako recimo želiš promijeniti u kasnijem kodu račun tangenta, mjenjat ćeš ga i kod birca
kad radiš sa pointerima u klasi ( dinamički alociranom memorijom ), trebaš također napravit kopy-konstruktor i operator=
Ne da mi se to baš sad objašnjavat, o tome imaš dosta na netu.
Nisam baš dobro pogledao, ali sve tvoje funkcije primaju referencu, pa kopy konstruktor čak i nije potreban, ali operator= ti treba jer ti inače niš ne bu radilo...

zašto: recimo da ti funkcije rade kako treba ( npr. operator+ )
i stavimo ovaj slučaj:
Kod:
 tangenta = birc + tangenta;


po tvojem operatoru+ bit će vraćena referenca na birc ( jer vraća referencu na prvi element ). A tu si recimo izjednačio tangentu sa vraćenom referencom na birc.

Što će sada u sebi imati tangenta? listu pokazivača na piće. Ali koje pokazivače? Ti nisi napisao svoj operator= i kompajler će ti ga sam napravit... kako? tak da jednostavno prekopira sve elemente iz jedne strukture u drugu, u ovom slučaju konkretno će svi elementi iz racuna:

birc+tangenta

biti prekopirani u tangentu, jedan po jedan. A što se u biti kopira? Pointeri, tj. adrese jer su adrese vrijednosti pointera, pa ćeč imati klasu

tangenta sa listom pokazivača s vrjednostima istim kao i vrijednostima liste pokazivača klase birc. S obzirom da su te vrijednosti adrese tebi će i tangenta i birc pokazivati na iste stvari, tj. na ista pića i ako recimo želiš promijeniti u kasnijem kodu račun tangenta, mjenjat ćeš ga i kod birca


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
konjina
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 04. 2010. (21:55:18)
Postovi: (2C)16
Sarma = la pohva - posuda
= 19 - 14
Lokacija: po livadama i šumama

PostPostano: 18:51 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

uf uf , fala ti....mislim da ću svakako pokušati izbjeći pointere u klasi
[quote="Cobs"]kad radiš sa pointerima u klasi ( dinamički alociranom memorijom ), trebaš također napravit kopy-konstruktor i operator=
Ne da mi se to baš sad objašnjavat, o tome imaš dosta na netu.
Nisam baš dobro pogledao, ali sve tvoje funkcije primaju referencu, pa kopy konstruktor čak i nije potreban, ali operator= ti treba jer ti inače niš ne bu radilo...

zašto: recimo da ti funkcije rade kako treba ( npr. operator+ )
i stavimo ovaj slučaj:
[code:1] tangenta = birc + tangenta;[/code:1]

po tvojem operatoru+ bit će vraćena referenca na birc ( jer vraća referencu na prvi element ). A tu si recimo izjednačio tangentu sa vraćenom referencom na birc.

Što će sada u sebi imati tangenta? listu pokazivača na piće. Ali koje pokazivače? Ti nisi napisao svoj operator= i kompajler će ti ga sam napravit... kako? tak da jednostavno prekopira sve elemente iz jedne strukture u drugu, u ovom slučaju konkretno će svi elementi iz racuna:

birc+tangenta

biti prekopirani u tangentu, jedan po jedan. A što se u biti kopira? Pointeri, tj. adrese jer su adrese vrijednosti pointera, pa ćeč imati klasu

tangenta sa listom pokazivača s vrjednostima istim kao i vrijednostima liste pokazivača klase birc. S obzirom da su te vrijednosti adrese tebi će i tangenta i birc pokazivati na iste stvari, tj. na ista pića i ako recimo želiš promijeniti u kasnijem kodu račun tangenta, mjenjat ćeš ga i kod birca[/quote]
uf uf , fala ti....mislim da ću svakako pokušati izbjeći pointere u klasi
Cobs (napisa):
kad radiš sa pointerima u klasi ( dinamički alociranom memorijom ), trebaš također napravit kopy-konstruktor i operator=
Ne da mi se to baš sad objašnjavat, o tome imaš dosta na netu.
Nisam baš dobro pogledao, ali sve tvoje funkcije primaju referencu, pa kopy konstruktor čak i nije potreban, ali operator= ti treba jer ti inače niš ne bu radilo...

zašto: recimo da ti funkcije rade kako treba ( npr. operator+ )
i stavimo ovaj slučaj:
Kod:
 tangenta = birc + tangenta;


po tvojem operatoru+ bit će vraćena referenca na birc ( jer vraća referencu na prvi element ). A tu si recimo izjednačio tangentu sa vraćenom referencom na birc.

Što će sada u sebi imati tangenta? listu pokazivača na piće. Ali koje pokazivače? Ti nisi napisao svoj operator= i kompajler će ti ga sam napravit... kako? tak da jednostavno prekopira sve elemente iz jedne strukture u drugu, u ovom slučaju konkretno će svi elementi iz racuna:

birc+tangenta

biti prekopirani u tangentu, jedan po jedan. A što se u biti kopira? Pointeri, tj. adrese jer su adrese vrijednosti pointera, pa ćeč imati klasu

tangenta sa listom pokazivača s vrjednostima istim kao i vrijednostima liste pokazivača klase birc. S obzirom da su te vrijednosti adrese tebi će i tangenta i birc pokazivati na iste stvari, tj. na ista pića i ako recimo želiš promijeniti u kasnijem kodu račun tangenta, mjenjat ćeš ga i kod birca



_________________
NJIIIIHAAA
[Vrh]
Korisnički profil Pošaljite privatnu poruku
ddduuu
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 16. 11. 2008. (12:31:48)
Postovi: (109)16
Sarma = la pohva - posuda
= 20 - 16

PostPostano: 21:16 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

Vezano za taj zadatak, jel neko moze pogledat sta mi ne radi...

vraca mi grasku za ovaj dio

for(mi=a.popis.begin();mi!=a.popis.end();++mi)
novi.popis[li->first]=li->second;


evo dio prog do tu


#include<iostream>
#include<map>
#include<vector>
using namespace std;


class racun
{
public: map<string,int> popis;

racun();
racun( string ime, int i=1 )
{
popis[ime]=i;
}

friend racun operator+ ( const racun &a, const racun &b);
friend ostream& operator<< (ostream &f, racun& r);
};

racun operator+ ( const racun &a, const racun &b)
{
map<string,int>::iterator mi,li;

racun novi;
for(mi=a.popis.begin();mi!=a.popis.end();++mi)
novi.popis[li->first]=li->second;


for( li=popis.begin(); li!=popis.end(); ++li)
novi.popis[li->first]=li->second;;

return a;

}
Vezano za taj zadatak, jel neko moze pogledat sta mi ne radi...

vraca mi grasku za ovaj dio

for(mi=a.popis.begin();mi!=a.popis.end();++mi)
novi.popis[li→first]=li→second;


evo dio prog do tu


#include<iostream>
#include<map>
#include<vector>
using namespace std;


class racun
{
public: map<string,int> popis;

racun();
racun( string ime, int i=1 )
{
popis[ime]=i;
}

friend racun operator+ ( const racun &a, const racun &b);
friend ostream& operator<< (ostream &f, racun& r);
};

racun operator+ ( const racun &a, const racun &b)
{
map<string,int>::iterator mi,li;

racun novi;
for(mi=a.popis.begin();mi!=a.popis.end();++mi)
novi.popis[li→first]=li→second;


for( li=popis.begin(); li!=popis.end(); ++li)
novi.popis[li→first]=li→second;;

return a;

}


[Vrh]
Korisnički profil Pošaljite privatnu poruku
konjina
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 04. 2010. (21:55:18)
Postovi: (2C)16
Sarma = la pohva - posuda
= 19 - 14
Lokacija: po livadama i šumama

PostPostano: 21:21 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

zato što ti mi postaje adresa na a....
a a ti je tipa const što znači da bi preko mi mogao mijenjati a...dakle makni const-ove u funkciji i trebali bi raditi
zato što ti mi postaje adresa na a....
a a ti je tipa const što znači da bi preko mi mogao mijenjati a...dakle makni const-ove u funkciji i trebali bi raditi



_________________
NJIIIIHAAA
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Gino
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 09. 2008. (10:54:06)
Postovi: (370)16
Sarma = la pohva - posuda
-29 = 108 - 137
Lokacija: Pula

PostPostano: 21:23 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

u mapi su stvari sortirane ne mozes mjenjat nesto preko iteratora jer gubis na sortiranosti(mozda)

u tvom slucaju ne, al ko da kompajler to zna
dakle nades, izbacis, promjenis, ubacis...
u mapi su stvari sortirane ne mozes mjenjat nesto preko iteratora jer gubis na sortiranosti(mozda)

u tvom slucaju ne, al ko da kompajler to zna
dakle nades, izbacis, promjenis, ubacis...



_________________
Mario Berljafa
[Vrh]
Korisnički profil Pošaljite privatnu poruku
konjina
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 04. 2010. (21:55:18)
Postovi: (2C)16
Sarma = la pohva - posuda
= 19 - 14
Lokacija: po livadama i šumama

PostPostano: 21:24 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

dosta često ti se to može desit...ta zbrka sa constovima...ako ne piše drukčije, ja bih ti preporučio da ih uopće ne pišeš na kolokviju, jer koliko sam ja shvatio oni služe samo da ih možeš pozvati na const objektima



pa napravi program u kojem to nećeš napraviti :D
dosta često ti se to može desit...ta zbrka sa constovima...ako ne piše drukčije, ja bih ti preporučio da ih uopće ne pišeš na kolokviju, jer koliko sam ja shvatio oni služe samo da ih možeš pozvati na const objektima



pa napravi program u kojem to nećeš napraviti Very Happy



_________________
NJIIIIHAAA
[Vrh]
Korisnički profil Pošaljite privatnu poruku
ddduuu
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 16. 11. 2008. (12:31:48)
Postovi: (109)16
Sarma = la pohva - posuda
= 20 - 16

PostPostano: 21:45 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

Hvala:))

Sad iman jos jedno pitanje, ne prihvaca mi ovo u mainu:

int main()
{
vector<prozor* > popis;

popis.push_back(new gumb("GRRRRRRRRRRR")) ;


return 0;}


a ovo je cijeli kod...


#include<iostream>
#include<vector>
#include<string>
using namespace std;

class prozor{

protected:
string _ime;
public:
prozor(string ime);
virtual ~prozor() {iscrtajMe();}
virtual void iscrtajMe() const {}
virtual string tekst() const {return _ime;}
};

class gumb:public prozor
{
private: string slika;
public:
gumb( string ime):prozor (ime){};

void postaviSliku(string imeSlike)
{ slika=imeSlike;}

void iscrtajMe()
{ cout << slika << " " << _ime << endl;}

};

class editBox:public prozor
{
private: string bla;

public: editBox( string ime):prozor(ime) {};

void postaviTekst(string text)
{ bla=text; }

void iscrtajMe()
{ cout << _ime << " " << bla << endl;}

string tekst()
{return bla;}

};

int main()
{
vector<prozor* > popis;

popis.push_back(new gumb("GRRRRRRRRRRR")) ;


return 0;}
Hvala:))

Sad iman jos jedno pitanje, ne prihvaca mi ovo u mainu:

int main()
{
vector<prozor* > popis;

popis.push_back(new gumb("GRRRRRRRRRRR")) ;


return 0;}


a ovo je cijeli kod...


#include<iostream>
#include<vector>
#include<string>
using namespace std;

class prozor{

protected:
string _ime;
public:
prozor(string ime);
virtual ~prozor() {iscrtajMe();}
virtual void iscrtajMe() const {}
virtual string tekst() const {return _ime;}
};

class gumb:public prozor
{
private: string slika;
public:
gumb( string ime):prozor (ime){};

void postaviSliku(string imeSlike)
{ slika=imeSlike;}

void iscrtajMe()
{ cout << slika << " " << _ime << endl;}

};

class editBox:public prozor
{
private: string bla;

public: editBox( string ime):prozor(ime) {};

void postaviTekst(string text)
{ bla=text; }

void iscrtajMe()
{ cout << _ime << " " << bla << endl;}

string tekst()
{return bla;}

};

int main()
{
vector<prozor* > popis;

popis.push_back(new gumb("GRRRRRRRRRRR")) ;


return 0;}


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Gost






PostPostano: 21:49 sri, 9. 6. 2010    Naslov: Citirajte i odgovorite

Probaj ovako :

vector<prozor* > V ;
gumb *g=new gumb("gggg");
V.push_back(g);
Probaj ovako :

vector<prozor* > V ;
gumb *g=new gumb("gggg");
V.push_back(g);


[Vrh]
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Računarski praktikum 1 Vremenska zona: GMT + 01:00.
Idite na 1, 2  Sljedeće
Stranica 1 / 2.

 
Forum(o)Bir:  
Možete otvarati nove teme.
Možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You can attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan