Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
frikmen2 Forumaš(ica)

Pridružen/a: 04. 11. 2006. (12:12:01) Postovi: (2B)16
|
Postano: 17:09 pet, 20. 6. 2008 Naslov: Kopiranje struktura |
|
|
Zadatak (prigodni, nogometni ;-)) s roka 14.6.2004. glasi:
Defnirajte funkcije za unos, ispis i kopiranje podataka tipa [tt]nogometas[/tt] defniranog s
[code:1]
typedef struct _nogometas {
char ime[100];
char* drzava;
int starost;
} nogometas;
[/code:1]
Prototipovi funkcija su sljedeći:
[code:1]
nogometas unos(void);
void ispis(nogometas);
nog_copy(nogometas*, nogometas*);
[/code:1]
Napomena: kopiranje tipa n1= n2 ne prolazi!
Za ime države rezervirajte točno onoliko memorije koliko je potrebno.
Imam nekoliko pitanja:
1. Zašto kopiranje tipa n1=n2 ne prolazi? Možda jer je dio strukture string (polje), a znamo da se polja ne mogu kopirati operatorom '='? No ipak, u vježbama su se neke strukture tako kopirale... A i kad napišem program na taj način, radi.:-k
2. Koji je povratni tip funkcije nog_copy? Ovo je valjda greška, pretpostavimo da je void... :roll:
3. Kako za državu alocirati točno onoliko memorije koliko je potrebno? :oops:
Hvala.
Zadatak (prigodni, nogometni ) s roka 14.6.2004. glasi:
Defnirajte funkcije za unos, ispis i kopiranje podataka tipa nogometas defniranog s
Kod: |
typedef struct _nogometas {
char ime[100];
char* drzava;
int starost;
} nogometas;
|
Prototipovi funkcija su sljedeći:
Kod: |
nogometas unos(void);
void ispis(nogometas);
nog_copy(nogometas*, nogometas*);
|
Napomena: kopiranje tipa n1= n2 ne prolazi!
Za ime države rezervirajte točno onoliko memorije koliko je potrebno.
Imam nekoliko pitanja:
1. Zašto kopiranje tipa n1=n2 ne prolazi? Možda jer je dio strukture string (polje), a znamo da se polja ne mogu kopirati operatorom '='? No ipak, u vježbama su se neke strukture tako kopirale... A i kad napišem program na taj način, radi.
2. Koji je povratni tip funkcije nog_copy? Ovo je valjda greška, pretpostavimo da je void...
3. Kako za državu alocirati točno onoliko memorije koliko je potrebno?
Hvala.
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
Postano: 17:25 pet, 20. 6. 2008 Naslov: Re: Kopiranje struktura |
|
|
[quote="frikmen2"]
1. Zašto kopiranje tipa n1=n2 ne prolazi? Možda jer je dio strukture string (polje), a znamo da se polja ne mogu kopirati operatorom '='? No ipak, u vježbama su se neke strukture tako kopirale... :-k [/quote]
Jer ovdje imaš pointer, ako kopiraš pointer, onda će i za jednog i za drugog taj pointer pokazivati na isto mjesto u memoriji, pa eventualno mijenjanje države kod jednog, će promijenit državu drugog, a to ne želimo ;)
[quote="frikmen2"]
2. Koji je povratni tip funkcije nog_copy? Ovo je valjda greška, pretpostavimo da je void... :roll: [/quote]
I ja bi reko da je void pošto šalješ 2 pointera na nogometaše...
[quote="frikmen2"]
3. Kako za državu alocirati točno onoliko memorije koliko je potrebno? :oops: [/quote]
Kod unosa vjerojatno pitaš da se unese string za ime, to nek bude char[100], pa prebrojiš kolko ih ustvari ima i tolko alociraš za državu
Ali je c++ divan... ne trebaju ti takve fje, sve je dio strukture, ma divno... možeš napisat nogometaš1=nogometaš2 i to prolazi, ma milina. :lol:
A ako te zanima nogomet imam jedan programčić kojeg sam piso prošle god... datoteke, strukture se koriste i tako pa pitaj na pm...
frikmen2 (napisa): |
1. Zašto kopiranje tipa n1=n2 ne prolazi? Možda jer je dio strukture string (polje), a znamo da se polja ne mogu kopirati operatorom '='? No ipak, u vježbama su se neke strukture tako kopirale... |
Jer ovdje imaš pointer, ako kopiraš pointer, onda će i za jednog i za drugog taj pointer pokazivati na isto mjesto u memoriji, pa eventualno mijenjanje države kod jednog, će promijenit državu drugog, a to ne želimo
frikmen2 (napisa): |
2. Koji je povratni tip funkcije nog_copy? Ovo je valjda greška, pretpostavimo da je void... |
I ja bi reko da je void pošto šalješ 2 pointera na nogometaše...
frikmen2 (napisa): |
3. Kako za državu alocirati točno onoliko memorije koliko je potrebno? |
Kod unosa vjerojatno pitaš da se unese string za ime, to nek bude char[100], pa prebrojiš kolko ih ustvari ima i tolko alociraš za državu
Ali je c++ divan... ne trebaju ti takve fje, sve je dio strukture, ma divno... možeš napisat nogometaš1=nogometaš2 i to prolazi, ma milina.
A ako te zanima nogomet imam jedan programčić kojeg sam piso prošle god... datoteke, strukture se koriste i tako pa pitaj na pm...
_________________ "Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy 
|
|
[Vrh] |
|
frikmen2 Forumaš(ica)

Pridružen/a: 04. 11. 2006. (12:12:01) Postovi: (2B)16
|
Postano: 18:01 pet, 20. 6. 2008 Naslov: |
|
|
[quote]
Jer ovdje imaš pointer, ako kopiraš pointer, onda će i za jednog i za drugog taj pointer pokazivati na isto mjesto u memoriji, pa eventualno mijenjanje države kod jednog, će promijenit državu drugog, a to ne želimo.
[/quote]
A kopiranje *n1=*n2 je ok? Iako su varijable tipa strukture koja u sebi sadrži polja.
[quote]
Kod unosa vjerojatno pitaš da se unese string za ime, to nek bude char[100], pa prebrojiš kolko ih ustvari ima i tolko alociraš za državu
[/quote]
Ovo mi malo smrdi... :?
Citat: |
Jer ovdje imaš pointer, ako kopiraš pointer, onda će i za jednog i za drugog taj pointer pokazivati na isto mjesto u memoriji, pa eventualno mijenjanje države kod jednog, će promijenit državu drugog, a to ne želimo.
|
A kopiranje *n1=*n2 je ok? Iako su varijable tipa strukture koja u sebi sadrži polja.
Citat: |
Kod unosa vjerojatno pitaš da se unese string za ime, to nek bude char[100], pa prebrojiš kolko ih ustvari ima i tolko alociraš za državu
|
Ovo mi malo smrdi...
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
Postano: 19:33 pet, 20. 6. 2008 Naslov: |
|
|
[quote="frikmen2"]
A kopiranje *n1=*n2 je ok? Iako su varijable tipa strukture koja u sebi sadrži polja.[/quote]
Mislim da da. Jer to su neki pointeri koji pokazuju na nešto (u ovom slučaju strukturu). Pa će oba pointera pokazivat na istog nogometaša tako da mijenjanjem onog kojeg pokazuje n1 ćeš promijenit onog na kojeg pokazuje n2 (jer su to iste strukture)
[quote="frikmen2"]
[quote="Luuka"]
Kod unosa vjerojatno pitaš da se unese string za ime, to nek bude char[100], pa prebrojiš kolko ih ustvari ima i tolko alociraš za državu
[/quote]
Ovo mi malo smrdi... :?[/quote]
Zašto smrdi? :? Na početku kažeš char[100] ime_drzave, onda da korisnik unese državu, to spremiš u ime_drzave. Sa strlen nađeš kolko je dugačko to uneseno ime (recimo n) i onda drzava=(char*)malloc(n*sizeof(char)); i valjda strcpy (drzava,ime_drzave). Već sam malo zaboravio C-ofske fje, al to bi trebalo bit tak nešto.
frikmen2 (napisa): |
A kopiranje *n1=*n2 je ok? Iako su varijable tipa strukture koja u sebi sadrži polja. |
Mislim da da. Jer to su neki pointeri koji pokazuju na nešto (u ovom slučaju strukturu). Pa će oba pointera pokazivat na istog nogometaša tako da mijenjanjem onog kojeg pokazuje n1 ćeš promijenit onog na kojeg pokazuje n2 (jer su to iste strukture)
frikmen2 (napisa): |
Luuka (napisa): |
Kod unosa vjerojatno pitaš da se unese string za ime, to nek bude char[100], pa prebrojiš kolko ih ustvari ima i tolko alociraš za državu
|
Ovo mi malo smrdi...  |
Zašto smrdi? Na početku kažeš char[100] ime_drzave, onda da korisnik unese državu, to spremiš u ime_drzave. Sa strlen nađeš kolko je dugačko to uneseno ime (recimo n) i onda drzava=(char*)malloc(n*sizeof(char)); i valjda strcpy (drzava,ime_drzave). Već sam malo zaboravio C-ofske fje, al to bi trebalo bit tak nešto.
_________________ "Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy 
|
|
[Vrh] |
|
|