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

1. kolokvij 2010.
WWW:
Idite na Prethodno  1, 2, 3, 4  Sljedeće
Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Strukture podataka i algoritmi
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
pmli
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 09. 11. 2009. (12:03:05)
Postovi: (2C8)16
Spol: muško
Sarma = la pohva - posuda
197 = 203 - 6

PostPostano: 20:15 sub, 30. 10. 2010    Naslov: Citirajte i odgovorite

Deklariraj i inicijaliziraj jednu varijablu koja će pamtiti je li niz sretan, jednu varijablu za parnost oznake djeteta te jednu za mjerenje duljine niza.
U while-petlji se kreći prema korijenu. Ako primjetiš da je oznaka trenutnog čvora iste parnosti kao i oznaka čvora kojeg si prethodno gledala (njegovo dijete), znaš da je niz sretan. Kakogod, nastaviš dalje, pritom povećavajući mjerač duljine.
Vrati 0 ako niz nije sretan, inače duljinu niza.
Deklariraj i inicijaliziraj jednu varijablu koja će pamtiti je li niz sretan, jednu varijablu za parnost oznake djeteta te jednu za mjerenje duljine niza.
U while-petlji se kreći prema korijenu. Ako primjetiš da je oznaka trenutnog čvora iste parnosti kao i oznaka čvora kojeg si prethodno gledala (njegovo dijete), znaš da je niz sretan. Kakogod, nastaviš dalje, pritom povećavajući mjerač duljine.
Vrati 0 ako niz nije sretan, inače duljinu niza.


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


Pridružen/a: 02. 11. 2009. (19:23:23)
Postovi: (4F)16
Sarma = la pohva - posuda
= 4 - 0

PostPostano: 13:36 ned, 31. 10. 2010    Naslov: Citirajte i odgovorite

dali mi moze neko reci samo ideju za rjesavanje 1 zadatak iz kolkovija 2008?
dali mi moze neko reci samo ideju za rjesavanje 1 zadatak iz kolkovija 2008?


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


Pridružen/a: 09. 11. 2009. (12:03:05)
Postovi: (2C8)16
Spol: muško
Sarma = la pohva - posuda
197 = 203 - 6

PostPostano: 14:51 ned, 31. 10. 2010    Naslov: Citirajte i odgovorite

[quote="andra"]dali mi moze neko reci samo ideju za rjesavanje 1 zadatak iz kolkovija 2008?[/quote]
Može! :)

Prebaci sve iz stoga u jedan red.
Neka je x broj koji se nalazi na čelu reda. Isprazni red tako da sve brojeve jednake x stavljaš na stog (usput brojiš koliko si stavila brojeva na stog), a ostale u drugi red. Ako je broj dodanih elemenata u stog veći ili jednak k, izbaci sve elemente jednake x i povećaj brojač izbačenih. Vrati sve iz drugog reda u prvi.
Ponavljaj dok prvi red nije prazan.
Vrati broj izbačenih.
andra (napisa):
dali mi moze neko reci samo ideju za rjesavanje 1 zadatak iz kolkovija 2008?

Može! Smile

Prebaci sve iz stoga u jedan red.
Neka je x broj koji se nalazi na čelu reda. Isprazni red tako da sve brojeve jednake x stavljaš na stog (usput brojiš koliko si stavila brojeva na stog), a ostale u drugi red. Ako je broj dodanih elemenata u stog veći ili jednak k, izbaci sve elemente jednake x i povećaj brojač izbačenih. Vrati sve iz drugog reda u prvi.
Ponavljaj dok prvi red nije prazan.
Vrati broj izbačenih.


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


Pridružen/a: 21. 10. 2009. (16:25:25)
Postovi: (1C)16
Sarma = la pohva - posuda
= 1 - 0

PostPostano: 22:08 ned, 31. 10. 2010    Naslov: Citirajte i odgovorite

e da :lol: i ja sam sad na tom zadatku, i zanima me u koju varijablu mogu spremati broj pojavljivanja određenog slova/broja ak pise da se mogu koristiti samo dva pomoćna stoga, govorim o grupi u kojoj se pojavljuju pod tipa char, al svejedno... :)

[size=9][color=#999999]Added after 34 minutes:[/color][/size]

http://web.math.hr/nastava/spa/kolokviji/2009/SPA2009%20-%20kolokvij1%20-%20zadaci.pdf

i još jedno pitanje : u prvom zadatku pod a) , jel mozemo zanemariti ovaj uvijet da stog mora ostati nepromijenjen, jer ocito ostaje nepromijenjen ukoliko u pozivu fje ne saljemo adresu stoga
e da Laughing i ja sam sad na tom zadatku, i zanima me u koju varijablu mogu spremati broj pojavljivanja određenog slova/broja ak pise da se mogu koristiti samo dva pomoćna stoga, govorim o grupi u kojoj se pojavljuju pod tipa char, al svejedno... Smile

Added after 34 minutes:

http://web.math.hr/nastava/spa/kolokviji/2009/SPA2009%20-%20kolokvij1%20-%20zadaci.pdf

i još jedno pitanje : u prvom zadatku pod a) , jel mozemo zanemariti ovaj uvijet da stog mora ostati nepromijenjen, jer ocito ostaje nepromijenjen ukoliko u pozivu fje ne saljemo adresu stoga


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


Pridružen/a: 13. 10. 2008. (17:45:10)
Postovi: (3C5)16
Spol: muško
Sarma = la pohva - posuda
24 = 71 - 47

PostPostano: 22:34 ned, 31. 10. 2010    Naslov: Citirajte i odgovorite

Moras slat adresu jer moras premjestat elemente iz stoga (brisat, opet stavljat kasnije) u red. opcenito, adresu uvijek saljes kad dodajes, brises ili mjenjas elemente u stogu,redu,... . A kad samo nesto provjeravas ili ispisujes onda netrebas.
Primjer;
TOP(S)-> ne "radis" mu nista nego ga samo "gledas"
FRONT(Q)-> isto samo gledas element na pocetku reda i nista ne radis s njim.

e, a kad imas recimo
PUSH(&S)-> saljes adresu jer trebas promjenit svoj stog.

Ako se sjecas sa prog 1 ( ili 2 cak ) pointera. Saljes pointer u f-ju kad je zelis promjenit u f-ji i onda je natrag dobit u main-u promjenjenu. e, ovo ti je ista stvar osim sto ti je sad tu pointer stog.
Nadam se da sam ti jednostavno objasnio i da si skuzio :)
Moras slat adresu jer moras premjestat elemente iz stoga (brisat, opet stavljat kasnije) u red. opcenito, adresu uvijek saljes kad dodajes, brises ili mjenjas elemente u stogu,redu,... . A kad samo nesto provjeravas ili ispisujes onda netrebas.
Primjer;
TOP(S)-> ne "radis" mu nista nego ga samo "gledas"
FRONT(Q)-> isto samo gledas element na pocetku reda i nista ne radis s njim.

e, a kad imas recimo
PUSH(&S)-> saljes adresu jer trebas promjenit svoj stog.

Ako se sjecas sa prog 1 ( ili 2 cak ) pointera. Saljes pointer u f-ju kad je zelis promjenit u f-ji i onda je natrag dobit u main-u promjenjenu. e, ovo ti je ista stvar osim sto ti je sad tu pointer stog.
Nadam se da sam ti jednostavno objasnio i da si skuzio Smile



_________________
Ako ste previše otvorenog uma, ispast će vam mozak
------------------------------------------------------
Racunalo bez Windowsa je kao riba bez bicikla
[Vrh]
Korisnički profil Pošaljite privatnu poruku
homesweethome
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 10. 2009. (16:25:25)
Postovi: (1C)16
Sarma = la pohva - posuda
= 1 - 0

PostPostano: 22:41 ned, 31. 10. 2010    Naslov: Citirajte i odgovorite

daaaaa hvala lijepa :D shvatih, hvala najljepša :)
daaaaa hvala lijepa Very Happy shvatih, hvala najljepša Smile


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


Pridružen/a: 09. 11. 2009. (12:03:05)
Postovi: (2C8)16
Spol: muško
Sarma = la pohva - posuda
197 = 203 - 6

PostPostano: 23:05 ned, 31. 10. 2010    Naslov: Citirajte i odgovorite

[quote="homesweethome"]jer ocito ostaje nepromijenjen ukoliko u pozivu fje ne saljemo adresu stoga[/quote]
To ne mora vrijediti. Ako je stog implementiran pomoću pointera, čak i ako šalješ samo stog, to je ipak adresa, i s njom možeš napraviti kaos. :bricks:
Kad ćeš provjeravati svoj kod na računalu, htjeti ćeš i vidjeti jesi li dobro upisala stog, pa zatim i što je u stogu ostalo nakon što ga je funkcija napala, pa ćeš se sjetit napisati funkciju za ispis stoga. Ako koristiš stog implementiran pointerima, jako se pazi što radiš! :D
homesweethome (napisa):
jer ocito ostaje nepromijenjen ukoliko u pozivu fje ne saljemo adresu stoga

To ne mora vrijediti. Ako je stog implementiran pomoću pointera, čak i ako šalješ samo stog, to je ipak adresa, i s njom možeš napraviti kaos. Uh-oh-jao...
Kad ćeš provjeravati svoj kod na računalu, htjeti ćeš i vidjeti jesi li dobro upisala stog, pa zatim i što je u stogu ostalo nakon što ga je funkcija napala, pa ćeš se sjetit napisati funkciju za ispis stoga. Ako koristiš stog implementiran pointerima, jako se pazi što radiš! Very Happy


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


Pridružen/a: 21. 10. 2009. (16:25:25)
Postovi: (1C)16
Sarma = la pohva - posuda
= 1 - 0

PostPostano: 23:18 ned, 31. 10. 2010    Naslov: Citirajte i odgovorite

:) probat cu.. hvala

i ako znate odgovor na moje pitanje iz gornjeg posta o prvom zadatku iz 2008.god..
Smile probat cu.. hvala

i ako znate odgovor na moje pitanje iz gornjeg posta o prvom zadatku iz 2008.god..


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


Pridružen/a: 13. 10. 2008. (17:45:10)
Postovi: (3C5)16
Spol: muško
Sarma = la pohva - posuda
24 = 71 - 47

PostPostano: 23:31 ned, 31. 10. 2010    Naslov: Citirajte i odgovorite

[quote="pmli"][quote="homesweethome"]jer ocito ostaje nepromijenjen ukoliko u pozivu fje ne saljemo adresu stoga[/quote]
To ne mora vrijediti. Ako je stog implementiran pomoću pointera, čak i ako šalješ samo stog, to je ipak adresa, i s njom možeš napraviti kaos. :bricks:
Kad ćeš provjeravati svoj kod na računalu, htjeti ćeš i vidjeti jesi li dobro upisala stog, pa zatim i što je u stogu ostalo nakon što ga je funkcija napala, pa ćeš se sjetit napisati funkciju za ispis stoga. Ako koristiš stog implementiran pointerima, jako se pazi što radiš! :D[/quote]

ima mi smisla to kaj velis, ali onda me muci ovo. Zasto onda u neke f-je pozivamo sa &S ili &Q a neke ne ako mozes mjenjat na oba dva nacina stog/red.
Bas se budem poigrao s tim sutra pa da vidim kaj ispadne jer me veoma zanima kaj ce ispast na kraju. :)
pmli (napisa):
homesweethome (napisa):
jer ocito ostaje nepromijenjen ukoliko u pozivu fje ne saljemo adresu stoga

To ne mora vrijediti. Ako je stog implementiran pomoću pointera, čak i ako šalješ samo stog, to je ipak adresa, i s njom možeš napraviti kaos. Uh-oh-jao...
Kad ćeš provjeravati svoj kod na računalu, htjeti ćeš i vidjeti jesi li dobro upisala stog, pa zatim i što je u stogu ostalo nakon što ga je funkcija napala, pa ćeš se sjetit napisati funkciju za ispis stoga. Ako koristiš stog implementiran pointerima, jako se pazi što radiš! Very Happy


ima mi smisla to kaj velis, ali onda me muci ovo. Zasto onda u neke f-je pozivamo sa &S ili &Q a neke ne ako mozes mjenjat na oba dva nacina stog/red.
Bas se budem poigrao s tim sutra pa da vidim kaj ispadne jer me veoma zanima kaj ce ispast na kraju. Smile



_________________
Ako ste previše otvorenog uma, ispast će vam mozak
------------------------------------------------------
Racunalo bez Windowsa je kao riba bez bicikla
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Marvin
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 12. 2006. (15:46:10)
Postovi: (56)16
Sarma = la pohva - posuda
52 = 56 - 4

PostPostano: 23:35 ned, 31. 10. 2010    Naslov: Citirajte i odgovorite

[quote="ante003"]Moras slat adresu jer moras premjestat elemente iz stoga (brisat, opet stavljat kasnije) u red. opcenito, adresu uvijek saljes kad dodajes, brises ili mjenjas elemente u stogu,redu,... . A kad samo nesto provjeravas ili ispisujes onda netrebas.
Primjer;
TOP(S)-> ne "radis" mu nista nego ga samo "gledas"
FRONT(Q)-> isto samo gledas element na pocetku reda i nista ne radis s njim.

e, a kad imas recimo
PUSH(&S)-> saljes adresu jer trebas promjenit svoj stog.

Ako se sjecas sa prog 1 ( ili 2 cak ) pointera. Saljes pointer u f-ju kad je zelis promjenit u f-ji i onda je natrag dobit u main-u promjenjenu. e, ovo ti je ista stvar osim sto ti je sad tu pointer stog.
Nadam se da sam ti jednostavno objasnio i da si skuzio :)[/quote]

Malo preciznije, funkcija prima kopiju vrijednosti koju joj šalješ. Svi parametri koje pošalješ funkciji kao ulazne vrijednosti kopiraju se na posebno mjesto u memoriji.
Imena ulaznih parametara su identifikatori za te lokalne kopije.

Kada promijeniš neke od vrijednosti ulaznih parametara koristeći imena ulaznih parametara, tada se mijenja ta kopija.

Primjer:
[code:1]
void Foo(int a) {};
void Bar(int* pa) {};
[/code:1]

U prvoj funkciji ćeš proslijediti cijeli broj; [tt]int[/tt]. To znači da će se proslijeđeni broj kopirati na neko drugo mjesto u memoriji. Unutar tijela funkcije se tom mjestu može pristupiti pomoću imena [tt]a[/tt].

U drugoj funkciji trebaš proslijediti pokazivač na cijeli broj; [tt]int*[/tt]. To znači da se proslijeđeni pokazivač (adresa) kopira na neko drugo mjesto u memoriji. Unutar tijela funkcije se tom mjestu može pristupiti pomoću imena [tt]pa[/tt].

Skicirano:
[code:1]int broj = 14; // broj = 156 [14], uz pretpostavku da je adresa inicijaliziranog cijelog broja 156
Foo(broj); // a = 168 [14], uz pretpostavku da je kopija stvorena na adresi 168

int* brojPtr = &a; // brojPtr = 160 [156], uz pretpostavku da je adresa inicijaliziranog pokazivača na cijeli broj 160
Bar(brojPtr); // pa = 164 [156], uz pretpostavku da je kopija stvorena na adresi 164
[/code:1]

Sada primjeti da iako se pokazivač [tt]brojPtr[/tt] i njegova kopija [tt]pa[/tt] nalaze na različitim mjestima, oba imaju istu vrijednost. Pomoću te vrijednosti 156 možemo indirektno pristupiti istom broju, [tt]broj = 156 [14][/tt], pomoću operatora dereferenciranja [tt]*[/tt] - npr [tt]*pa[/tt] ili [tt]*brojPtr[/tt].

Ako bi u funkciji [tt]Foo[/tt] promijenio vrijednost ulaznog podataka pomoću imena [tt]a[/tt] (npr. [tt]a = nova vrijednost[/tt]), ona bi se promijenila na adresi 168, dok bi vrijednost na adresi 156 ostala nepromijenjena ([tt]broj = 156 [14], a = 168 [nova vrijednost][/tt]).

Kada bi u funkciji [tt]Bar[/tt] promijenio vrijednost ulaznog podatka pomoću imena [tt]pa[/tt] (npr. [tt]pa = nova vrijednost[/tt]), ona bi se promijenila na adresi 164, pa bi pokazivač [tt]pa[/tt] pokazivao na novu vrijednost ([tt]pa = 164 [nova vrijednost][/tt]);

Kada u funkciji [tt]Bar[/tt] promijeniš vrijednost [b]na koju pokazuje[/b] pokazivač [tt]pa[/tt] koristeći operator dereferenciranja [tt]*pa[/tt] (npr. [tt]*pa = nova vrijednost[/tt]), promijeni se vrijednost na adresi na koju pokazuje [tt]pa[/tt], dakle na adresi 156 ([tt]broj = 156 [nova vrijednost][/tt]).

Ukratko, pokazivači nam omogućavaju jedan stupanj indirektnosti - oni nisu direktno vrijednost podatka koji nas zanima, nego indirektno sadrže informaciju kako doći do vrijednosti (njihova vrijednost je podatak o tome kako doći do vrijednosti koja nas zanima).
ante003 (napisa):
Moras slat adresu jer moras premjestat elemente iz stoga (brisat, opet stavljat kasnije) u red. opcenito, adresu uvijek saljes kad dodajes, brises ili mjenjas elemente u stogu,redu,... . A kad samo nesto provjeravas ili ispisujes onda netrebas.
Primjer;
TOP(S)→ ne "radis" mu nista nego ga samo "gledas"
FRONT(Q)→ isto samo gledas element na pocetku reda i nista ne radis s njim.

e, a kad imas recimo
PUSH(&S)→ saljes adresu jer trebas promjenit svoj stog.

Ako se sjecas sa prog 1 ( ili 2 cak ) pointera. Saljes pointer u f-ju kad je zelis promjenit u f-ji i onda je natrag dobit u main-u promjenjenu. e, ovo ti je ista stvar osim sto ti je sad tu pointer stog.
Nadam se da sam ti jednostavno objasnio i da si skuzio Smile


Malo preciznije, funkcija prima kopiju vrijednosti koju joj šalješ. Svi parametri koje pošalješ funkciji kao ulazne vrijednosti kopiraju se na posebno mjesto u memoriji.
Imena ulaznih parametara su identifikatori za te lokalne kopije.

Kada promijeniš neke od vrijednosti ulaznih parametara koristeći imena ulaznih parametara, tada se mijenja ta kopija.

Primjer:
Kod:

void Foo(int a) {};
void Bar(int* pa) {};


U prvoj funkciji ćeš proslijediti cijeli broj; int. To znači da će se proslijeđeni broj kopirati na neko drugo mjesto u memoriji. Unutar tijela funkcije se tom mjestu može pristupiti pomoću imena a.

U drugoj funkciji trebaš proslijediti pokazivač na cijeli broj; int*. To znači da se proslijeđeni pokazivač (adresa) kopira na neko drugo mjesto u memoriji. Unutar tijela funkcije se tom mjestu može pristupiti pomoću imena pa.

Skicirano:
Kod:
int broj = 14; // broj  = 156 [14], uz pretpostavku da je adresa inicijaliziranog cijelog broja 156
Foo(broj); // a = 168 [14], uz pretpostavku da je kopija stvorena na adresi 168

int* brojPtr = &a; // brojPtr = 160 [156], uz pretpostavku da je adresa inicijaliziranog pokazivača na cijeli broj 160
Bar(brojPtr); // pa = 164 [156], uz pretpostavku da je kopija stvorena na adresi 164


Sada primjeti da iako se pokazivač brojPtr i njegova kopija pa nalaze na različitim mjestima, oba imaju istu vrijednost. Pomoću te vrijednosti 156 možemo indirektno pristupiti istom broju, broj = 156 [14], pomoću operatora dereferenciranja * - npr *pa ili *brojPtr.

Ako bi u funkciji Foo promijenio vrijednost ulaznog podataka pomoću imena a (npr. a = nova vrijednost), ona bi se promijenila na adresi 168, dok bi vrijednost na adresi 156 ostala nepromijenjena (broj = 156 [14], a = 168 [nova vrijednost]).

Kada bi u funkciji Bar promijenio vrijednost ulaznog podatka pomoću imena pa (npr. pa = nova vrijednost), ona bi se promijenila na adresi 164, pa bi pokazivač pa pokazivao na novu vrijednost (pa = 164 [nova vrijednost]);

Kada u funkciji Bar promijeniš vrijednost na koju pokazuje pokazivač pa koristeći operator dereferenciranja *pa (npr. *pa = nova vrijednost), promijeni se vrijednost na adresi na koju pokazuje pa, dakle na adresi 156 (broj = 156 [nova vrijednost]).

Ukratko, pokazivači nam omogućavaju jedan stupanj indirektnosti - oni nisu direktno vrijednost podatka koji nas zanima, nego indirektno sadrže informaciju kako doći do vrijednosti (njihova vrijednost je podatak o tome kako doći do vrijednosti koja nas zanima).


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


Pridružen/a: 09. 11. 2009. (12:03:05)
Postovi: (2C8)16
Spol: muško
Sarma = la pohva - posuda
197 = 203 - 6

PostPostano: 0:10 pon, 1. 11. 2010    Naslov: Citirajte i odgovorite

[quote="homesweethome"]zanima me u koju varijablu mogu spremati broj pojavljivanja određenog slova/broja ak pise da se mogu koristiti samo dva pomoćna stoga[/quote]
Zadatak kaže da ne smiješ koristiti polja i dodatne atp-ove. Nitko ti ne brani da uz dva stoga napraviš i par varijabli tipa int. :)

[quote="ante003"]Zasto onda u neke f-je pozivamo sa &S ili &Q a neke ne ako mozes mjenjat na oba dva nacina stog/red.[/quote]
Vjerojatno općenitosti radi (atp-ovi mogu biti implementirani poljem).
homesweethome (napisa):
zanima me u koju varijablu mogu spremati broj pojavljivanja određenog slova/broja ak pise da se mogu koristiti samo dva pomoćna stoga

Zadatak kaže da ne smiješ koristiti polja i dodatne atp-ove. Nitko ti ne brani da uz dva stoga napraviš i par varijabli tipa int. Smile

ante003 (napisa):
Zasto onda u neke f-je pozivamo sa &S ili &Q a neke ne ako mozes mjenjat na oba dva nacina stog/red.

Vjerojatno općenitosti radi (atp-ovi mogu biti implementirani poljem).


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


Pridružen/a: 01. 12. 2006. (15:46:10)
Postovi: (56)16
Sarma = la pohva - posuda
52 = 56 - 4

PostPostano: 0:13 pon, 1. 11. 2010    Naslov: Citirajte i odgovorite

[quote="ante003"][quote="pmli"][quote="homesweethome"]jer ocito ostaje nepromijenjen ukoliko u pozivu fje ne saljemo adresu stoga[/quote]
To ne mora vrijediti. Ako je stog implementiran pomoću pointera, čak i ako šalješ samo stog, to je ipak adresa, i s njom možeš napraviti kaos. :bricks:
Kad ćeš provjeravati svoj kod na računalu, htjeti ćeš i vidjeti jesi li dobro upisala stog, pa zatim i što je u stogu ostalo nakon što ga je funkcija napala, pa ćeš se sjetit napisati funkciju za ispis stoga. Ako koristiš stog implementiran pointerima, jako se pazi što radiš! :D[/quote]

ima mi smisla to kaj velis, ali onda me muci ovo. Zasto onda u neke f-je pozivamo sa &S ili &Q a neke ne ako mozes mjenjat na oba dva nacina stog/red.
Bas se budem poigrao s tim sutra pa da vidim kaj ispadne jer me veoma zanima kaj ce ispast na kraju. :)[/quote]

[b]Kratki odgovor:[/b]
Asistenti nisu bili najjasniji, a željeli su da ustvari pošaljete STACK* umjesto STACK kao ulazni podatak.

[b]Duži odgovor:[/b]
Iako [tt]pmli[/tt] u jednu ruku ima pravo, ti se s tim ne moraš zamarati na razini ATP-a.
ATP ti daje funkcije koje su točno definirane - funkcija s prototipom iz šalabahtera radi onako kako očekuješ. Znači, kada pozivaš [tt]void DEQUEUE(QUEUE* Q)[/tt], toj funkciji moraš proslijediti adresu ATP tipa QUEUE. To je smisao tog [tt]QUEUE*[/tt]. Unutar tijela funkcije je onda [tt]Q[/tt] identifikator za adresu apstraktnog tipa QUEUE.

Ali ti ionako ne možeš mijenjati unutrašnjost tijela funkcije ATP-a. To da li je u pozadini QUEUE ustvari neki [tt]int*[/tt], pa je njegova adresa ustvari [tt]int**[/tt] je tebi tako svejedno. Odgovornost implementatora funkcije je da posloži implementaciju tako da zadovoljava tvoja očekivanja.

Ono gdje ima nekog smisla razmišljati o tome što šalješ i što je u tijelu je pisanje vlastitih funkcija.

Npr.
1. Tvoja funkcija ima prototip koji zahtijeva adresu. Tada joj moraš proslijediti adresu. Unutar tijela funkcije je tada ime identifikator za adresu.
1.1. Ako unutar funkcije pozivaš neku funkciju ATP-a koja zahtijeva adresu, samo proslijediš adresu
1.2. Ako unutar funkcije pozivaš neku funkciju ATP-a koja zahtijeva vrijednost, proslijeđuješ dereferenciranu adresu

2. Tvoja funkcija ima prototip koji zahtijeva vrijednost. Tada joj moraš proslijediti vrijednost podatka. Unutar tijela funkcije je tada ime identifikator za vrijednost podatka.
2.1. Ako unutar funkcije pozivaš neku funkciju ATP-a koja zahtijeva adresu, proslijeđuješ adresu podataka adresnim operatorom
2.2. Ako unutar funkcije pozivaš neku funkciju ATP-a koja zahtijeva vrijednost, proslijeđuješ vrijednost podatka

Primjer:
[code:1]
void Foo(QUEUE Q)
{
DEQUEUE(&Q); // primjeti da se sada ustvari izbacuje početak na kopiji reda unutar funkcije, ne na originalnom redu
EMPTY(Q);
}
void Bar(QUEUE* Q)
{
DEQUEUE(Q); // sada se izbacuje početak na originalnom redu jer mu se pristupa po adresi
EMPTY(*Q);
}

QUEUE Q;
Foo(Q);
Bar(&Q);
[/code:1]

Kada bi stog i bio implementiran pokazivačima i kada bi i kopirao pokazivač kao vrijednost stoga, ne mora se promijeniti početni stog. Zašto?

Ovo je originalni stog:
S [&a_1] -> [a_1|&a_2] -> [a_2|&a_3] -> ... -> [a_n|NULL]

Vrijednost pokazivača S se kopira. Novi stog dodaje recimo element u stog. Tada kopija stoga izgleda ovako:

S [&a_novi] -> [a_novi|&a_1] -> [a_1|&a_2] -> [a_2|&a_3] -> ... -> [a_n|NULL].

Stari stog je isti jer je identificiran pokazivačem na prvi element. Isto tako i za pop.

I kod implementacije liste pomoću pointera se može izbjeći da se mijenja vrijednost originalne liste.

Ali ja se ne bi zamarao sa time, radije pretpostavite da kada šaljete po vrijednosti mijenjaš kopiju, kada šalješ po adresi dereferenciranjem mijenjate original
ante003 (napisa):
pmli (napisa):
homesweethome (napisa):
jer ocito ostaje nepromijenjen ukoliko u pozivu fje ne saljemo adresu stoga

To ne mora vrijediti. Ako je stog implementiran pomoću pointera, čak i ako šalješ samo stog, to je ipak adresa, i s njom možeš napraviti kaos. Uh-oh-jao...
Kad ćeš provjeravati svoj kod na računalu, htjeti ćeš i vidjeti jesi li dobro upisala stog, pa zatim i što je u stogu ostalo nakon što ga je funkcija napala, pa ćeš se sjetit napisati funkciju za ispis stoga. Ako koristiš stog implementiran pointerima, jako se pazi što radiš! Very Happy


ima mi smisla to kaj velis, ali onda me muci ovo. Zasto onda u neke f-je pozivamo sa &S ili &Q a neke ne ako mozes mjenjat na oba dva nacina stog/red.
Bas se budem poigrao s tim sutra pa da vidim kaj ispadne jer me veoma zanima kaj ce ispast na kraju. Smile


Kratki odgovor:
Asistenti nisu bili najjasniji, a željeli su da ustvari pošaljete STACK* umjesto STACK kao ulazni podatak.

Duži odgovor:
Iako pmli u jednu ruku ima pravo, ti se s tim ne moraš zamarati na razini ATP-a.
ATP ti daje funkcije koje su točno definirane - funkcija s prototipom iz šalabahtera radi onako kako očekuješ. Znači, kada pozivaš void DEQUEUE(QUEUE* Q), toj funkciji moraš proslijediti adresu ATP tipa QUEUE. To je smisao tog QUEUE*. Unutar tijela funkcije je onda Q identifikator za adresu apstraktnog tipa QUEUE.

Ali ti ionako ne možeš mijenjati unutrašnjost tijela funkcije ATP-a. To da li je u pozadini QUEUE ustvari neki int*, pa je njegova adresa ustvari int** je tebi tako svejedno. Odgovornost implementatora funkcije je da posloži implementaciju tako da zadovoljava tvoja očekivanja.

Ono gdje ima nekog smisla razmišljati o tome što šalješ i što je u tijelu je pisanje vlastitih funkcija.

Npr.
1. Tvoja funkcija ima prototip koji zahtijeva adresu. Tada joj moraš proslijediti adresu. Unutar tijela funkcije je tada ime identifikator za adresu.
1.1. Ako unutar funkcije pozivaš neku funkciju ATP-a koja zahtijeva adresu, samo proslijediš adresu
1.2. Ako unutar funkcije pozivaš neku funkciju ATP-a koja zahtijeva vrijednost, proslijeđuješ dereferenciranu adresu

2. Tvoja funkcija ima prototip koji zahtijeva vrijednost. Tada joj moraš proslijediti vrijednost podatka. Unutar tijela funkcije je tada ime identifikator za vrijednost podatka.
2.1. Ako unutar funkcije pozivaš neku funkciju ATP-a koja zahtijeva adresu, proslijeđuješ adresu podataka adresnim operatorom
2.2. Ako unutar funkcije pozivaš neku funkciju ATP-a koja zahtijeva vrijednost, proslijeđuješ vrijednost podatka

Primjer:
Kod:

void Foo(QUEUE Q)
{
   DEQUEUE(&Q); // primjeti da se sada ustvari izbacuje početak na kopiji reda unutar funkcije, ne na originalnom redu
   EMPTY(Q);
}
void Bar(QUEUE* Q)
{
   DEQUEUE(Q); // sada se izbacuje početak na originalnom redu jer mu se pristupa po adresi
   EMPTY(*Q);
}

QUEUE Q;
Foo(Q);
Bar(&Q);


Kada bi stog i bio implementiran pokazivačima i kada bi i kopirao pokazivač kao vrijednost stoga, ne mora se promijeniti početni stog. Zašto?

Ovo je originalni stog:
S [&a_1] → [a_1|&a_2] → [a_2|&a_3] → ... → [a_n|NULL]

Vrijednost pokazivača S se kopira. Novi stog dodaje recimo element u stog. Tada kopija stoga izgleda ovako:

S [&a_novi] → [a_novi|&a_1] → [a_1|&a_2] → [a_2|&a_3] → ... → [a_n|NULL].

Stari stog je isti jer je identificiran pokazivačem na prvi element. Isto tako i za pop.

I kod implementacije liste pomoću pointera se može izbjeći da se mijenja vrijednost originalne liste.

Ali ja se ne bi zamarao sa time, radije pretpostavite da kada šaljete po vrijednosti mijenjaš kopiju, kada šalješ po adresi dereferenciranjem mijenjate original


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


Pridružen/a: 25. 11. 2009. (20:50:12)
Postovi: (4C)16
Spol: žensko
Sarma = la pohva - posuda
= 3 - 1
Lokacija: varaždin/zagreb

PostPostano: 1:32 pon, 1. 11. 2010    Naslov: Citirajte i odgovorite

[quote="pmli"]Deklariraj i inicijaliziraj jednu varijablu koja će pamtiti je li niz sretan, jednu varijablu za parnost oznake djeteta te jednu za mjerenje duljine niza.
U while-petlji se kreći prema korijenu. Ako primjetiš da je oznaka trenutnog čvora iste parnosti kao i oznaka čvora kojeg si prethodno gledala (njegovo dijete), znaš da je niz sretan. Kakogod, nastaviš dalje, pritom povećavajući mjerač duljine.
Vrati 0 ako niz nije sretan, inače duljinu niza.[/quote]

kak da se krećem prema korijenu? tj. kaj mi je taj početni n? :roll:
pmli (napisa):
Deklariraj i inicijaliziraj jednu varijablu koja će pamtiti je li niz sretan, jednu varijablu za parnost oznake djeteta te jednu za mjerenje duljine niza.
U while-petlji se kreći prema korijenu. Ako primjetiš da je oznaka trenutnog čvora iste parnosti kao i oznaka čvora kojeg si prethodno gledala (njegovo dijete), znaš da je niz sretan. Kakogod, nastaviš dalje, pritom povećavajući mjerač duljine.
Vrati 0 ako niz nije sretan, inače duljinu niza.


kak da se krećem prema korijenu? tj. kaj mi je taj početni n? Rolling Eyes



_________________
I won't be a rock star. I will be a legend.
Freddie Mercury
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
pmli
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 09. 11. 2009. (12:03:05)
Postovi: (2C8)16
Spol: muško
Sarma = la pohva - posuda
197 = 203 - 6

PostPostano: 1:35 pon, 1. 11. 2010    Naslov: Citirajte i odgovorite

[quote="čungalunga"]kak da se krećem prema korijenu?[/quote]
Funkcijom PARENT. :)
čungalunga (napisa):
kak da se krećem prema korijenu?

Funkcijom PARENT. Smile


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


Pridružen/a: 13. 07. 2009. (23:07:06)
Postovi: (192)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
-21 = 37 - 58

PostPostano: 16:09 pon, 1. 11. 2010    Naslov: Citirajte i odgovorite

Jel bi mogo neko napisat kako da preko stoga izracunam vrijednost izraza zadanog u [b]prefix[/b] obliku?
Jel bi mogo neko napisat kako da preko stoga izracunam vrijednost izraza zadanog u prefix obliku?


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


Pridružen/a: 09. 11. 2009. (12:03:05)
Postovi: (2C8)16
Spol: muško
Sarma = la pohva - posuda
197 = 203 - 6

PostPostano: 16:20 pon, 1. 11. 2010    Naslov: Citirajte i odgovorite

[quote="eve"]Jel bi mogo neko napisat kako da preko stoga izracunam vrijednost izraza zadanog u [b]prefix[/b] obliku?[/quote]
Pogledaj [url=http://en.wikipedia.org/wiki/Polish_notation#Order_of_operations]ovdje[/url].
eve (napisa):
Jel bi mogo neko napisat kako da preko stoga izracunam vrijednost izraza zadanog u prefix obliku?

Pogledaj ovdje.


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


Pridružen/a: 14. 11. 2007. (20:03:46)
Postovi: (1BC)16
Sarma = la pohva - posuda
= 15 - 11
Lokacija: Zgb

PostPostano: 17:01 pon, 1. 11. 2010    Naslov: Citirajte i odgovorite

zanima me gdje su linkovi na kolokvije prije 2008?na stranici od kolegija ih nema,a sigurno su postajali :?
zanima me gdje su linkovi na kolokvije prije 2008?na stranici od kolegija ih nema,a sigurno su postajali Confused


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


Pridružen/a: 13. 07. 2009. (23:07:06)
Postovi: (192)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
-21 = 37 - 58

PostPostano: 17:36 pon, 1. 11. 2010    Naslov: Citirajte i odgovorite

[quote="pmli"][quote="eve"]Jel bi mogo neko napisat kako da preko stoga izracunam vrijednost izraza zadanog u [b]prefix[/b] obliku?[/quote]
Pogledaj [url=http://en.wikipedia.org/wiki/Polish_notation#Order_of_operations]ovdje[/url].[/quote]
Procitala sam to al nisam nasla kako da preko stoga izracunam prefix izraz...moze pomoc...?
pmli (napisa):
eve (napisa):
Jel bi mogo neko napisat kako da preko stoga izracunam vrijednost izraza zadanog u prefix obliku?

Pogledaj ovdje.

Procitala sam to al nisam nasla kako da preko stoga izracunam prefix izraz...moze pomoc...?


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


Pridružen/a: 13. 10. 2008. (17:45:10)
Postovi: (3C5)16
Spol: muško
Sarma = la pohva - posuda
24 = 71 - 47

PostPostano: 17:46 pon, 1. 11. 2010    Naslov: Citirajte i odgovorite

Jel ti to zadaca ili ?
Jel ti to zadaca ili ?



_________________
Ako ste previše otvorenog uma, ispast će vam mozak
------------------------------------------------------
Racunalo bez Windowsa je kao riba bez bicikla
[Vrh]
Korisnički profil Pošaljite privatnu poruku
eve
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 07. 2009. (23:07:06)
Postovi: (192)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
-21 = 37 - 58

PostPostano: 17:50 pon, 1. 11. 2010    Naslov: Citirajte i odgovorite

[quote="ante003"]Jel ti to zadaca ili ?[/quote]
Izmedju ostalog to je dio zadace, ali bi htjela doznat kak se to rjesava prije kolokvija - zlu ne trebalo...
ante003 (napisa):
Jel ti to zadaca ili ?

Izmedju ostalog to je dio zadace, ali bi htjela doznat kak se to rjesava prije kolokvija - zlu ne trebalo...


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Strukture podataka i algoritmi Vremenska zona: GMT + 01:00.
Idite na Prethodno  1, 2, 3, 4  Sljedeće
Stranica 2 / 4.

 
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