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

Kopiranje struktura (zadatak)
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
frikmen2
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 04. 11. 2006. (12:12:01)
Postovi: (2B)16
Sarma = la pohva - posuda
= 5 - 3

PostPostano: 17:09 pet, 20. 6. 2008    Naslov: Kopiranje struktura Citirajte i odgovorite

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 Wink) 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.Think
2. Koji je povratni tip funkcije nog_copy? Ovo je valjda greška, pretpostavimo da je void... Rolling Eyes
3. Kako za državu alocirati točno onoliko memorije koliko je potrebno? Embarassed


Hvala.


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


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 17:25 pet, 20. 6. 2008    Naslov: Re: Kopiranje struktura Citirajte i odgovorite

[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... Think


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 Wink

frikmen2 (napisa):

2. Koji je povratni tip funkcije nog_copy? Ovo je valjda greška, pretpostavimo da je void... Rolling Eyes


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? Embarassed


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. Laughing

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 Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
frikmen2
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 04. 11. 2006. (12:12:01)
Postovi: (2B)16
Sarma = la pohva - posuda
= 5 - 3

PostPostano: 18:01 pet, 20. 6. 2008    Naslov: Citirajte i odgovorite

[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... Confused


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


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 19:33 pet, 20. 6. 2008    Naslov: Citirajte i odgovorite

[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... Confused


Zašto smrdi? Confused 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 Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne 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 cannot 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