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: 18:10 pon, 1. 11. 2010    Naslov: Citirajte i odgovorite

[quote="eve"]Procitala sam to al nisam nasla kako da preko stoga izracunam prefix izraz...moze pomoc...?[/quote]
(1) Učitaš dio iz prefix izraza. Ako nema ništa za učitati, goto (3)
Ako učitaš operator, staviš ga na stog. Goto (1)
Ako učitaš operand, pogledaš što je na vrhu stoga. (2)
> Ako je na vrhu stoga operator, staviš operand na stog (pretpostavka je da su sve operacije binarne). Goto (1)
> Ako je na vrhu operand, izvadiš ga iz stoga, pa zatim i operator koji je bio ispod njega, primjeniš taj operator na dva operanda i njihov rezultat je novi operator i glumiš da si ga učitala. Goto (2)
(3) Rezultat je operand na vrhu stoga.

To bi bio pseudokod (valjda). Bilo bi dobro da goto naredbe zamjeniš s petljama, jer bi ti se inače moglo neko [url=http://xkcd.com/292/]zlo[/url] dogoditi. :)
eve (napisa):
Procitala sam to al nisam nasla kako da preko stoga izracunam prefix izraz...moze pomoc...?

(1) Učitaš dio iz prefix izraza. Ako nema ništa za učitati, goto (3)
Ako učitaš operator, staviš ga na stog. Goto (1)
Ako učitaš operand, pogledaš što je na vrhu stoga. (2)
> Ako je na vrhu stoga operator, staviš operand na stog (pretpostavka je da su sve operacije binarne). Goto (1)
> Ako je na vrhu operand, izvadiš ga iz stoga, pa zatim i operator koji je bio ispod njega, primjeniš taj operator na dva operanda i njihov rezultat je novi operator i glumiš da si ga učitala. Goto (2)
(3) Rezultat je operand na vrhu stoga.

To bi bio pseudokod (valjda). Bilo bi dobro da goto naredbe zamjeniš s petljama, jer bi ti se inače moglo neko zlo dogoditi. 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: 18:30 pon, 1. 11. 2010    Naslov: Citirajte i odgovorite

Hvala puno!
Hvala puno!


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


Pridružen/a: 15. 11. 2009. (21:02:20)
Postovi: (B8)16
Sarma = la pohva - posuda
= 6 - 2

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

Jedno pitanje! Kad implementiram ATP BTREE pomoću pointera, kako da "vratim ime čvora", npr. kod funkcije CREATE, tj. koja je razlika između "vrati ime čvora" i "vrati novi čvor", ili razlike uopće nema ? Da li treba vratiti pokazivač na taj čvor ili nešto treće :?: :?
Jedno pitanje! Kad implementiram ATP BTREE pomoću pointera, kako da "vratim ime čvora", npr. kod funkcije CREATE, tj. koja je razlika između "vrati ime čvora" i "vrati novi čvor", ili razlike uopće nema ? Da li treba vratiti pokazivač na taj čvor ili nešto treće Question Confused


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


Pridružen/a: 05. 10. 2009. (17:48:30)
Postovi: (143)16
Spol: muško
Sarma = la pohva - posuda
83 = 86 - 3

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

Tocno to, create vraca pointer na korijen... (jer u implementaciji pomocu pointera definiramo node kao celltype*)
Tocno to, create vraca pointer na korijen... (jer u implementaciji pomocu pointera definiramo node kao celltype*)


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


Pridružen/a: 12. 02. 2009. (22:01:19)
Postovi: (36)16
Sarma = la pohva - posuda
-5 = 0 - 5

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

Molim vas, da mi neko provjeri jeli mi točan ovaj zadatak, a zadatak glasi:Zadan je aritm.izraz (A-(B+D)*(C-A-D)+A)-C*D. Dijkstrinim algoritmom pretvorite ga u postfix oblik.A=2,B=1,C=6,D=3.
Ja sam dobila da je postfix oblik: ABD+-CA-D-*A+CD*- i rez sam dobila da je 18.
Molim vas, da mi neko provjeri jeli mi točan ovaj zadatak, a zadatak glasi:Zadan je aritm.izraz (A-(B+D)*(C-A-D)+A)-C*D. Dijkstrinim algoritmom pretvorite ga u postfix oblik.A=2,B=1,C=6,D=3.
Ja sam dobila da je postfix oblik: ABD+-CA-D-*A+CD*- i rez sam dobila da je 18.


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


Pridružen/a: 05. 10. 2009. (17:48:30)
Postovi: (143)16
Spol: muško
Sarma = la pohva - posuda
83 = 86 - 3

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

meni ispada ABD+CA-D-*-A+CD*- ...
meni ispada ABD+CA-D-*-A+CD*- ...


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


Pridružen/a: 19. 09. 2009. (23:36:13)
Postovi: (27)16
Sarma = la pohva - posuda
= 2 - 0
Lokacija: Zemlja i okolica

PostPostano: 11:53 uto, 2. 11. 2010    Naslov: Citirajte i odgovorite

stranica za brzu proveru infix u postfix notaciju
[url]http://scriptasylum.com/tutorials/infix_postfix/infix_postfix.html[/url]
stranica za brzu proveru infix u postfix notaciju
http://scriptasylum.com/tutorials/infix_postfix/infix_postfix.html


[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: 14:30 uto, 2. 11. 2010    Naslov: Citirajte i odgovorite

[quote=".anchy."]zanima me gdje su linkovi na kolokvije prije 2008?na stranici od kolegija ih nema,a sigurno su postajali :?[/quote]

Zar nisu na [url=http://web.math.hr/nastava/spa/pismeni.php]stranici s starim pismenim ispitima[/url]?
.anchy. (napisa):
zanima me gdje su linkovi na kolokvije prije 2008?na stranici od kolegija ih nema,a sigurno su postajali Confused


Zar nisu na stranici s starim pismenim ispitima?


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


Pridružen/a: 05. 11. 2009. (19:17:28)
Postovi: (76)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
= 1 - 1

PostPostano: 16:26 uto, 2. 11. 2010    Naslov: Citirajte i odgovorite

Dal bi netko mogao napisat postupak za dijkstrin algoritam za
X*y+z/(x-y-z)-z

http://web.math.hr/nastava/spa/kolokviji/2008/SPA2008%20--%20kolokvij1.pdf
I da netko rijesi prvi zadatak

Hvala puno
Dal bi netko mogao napisat postupak za dijkstrin algoritam za
X*y+z/(x-y-z)-z

http://web.math.hr/nastava/spa/kolokviji/2008/SPA2008%20--%20kolokvij1.pdf
I da netko rijesi prvi zadatak

Hvala puno


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


Pridružen/a: 19. 09. 2009. (23:36:13)
Postovi: (27)16
Sarma = la pohva - posuda
= 2 - 0
Lokacija: Zemlja i okolica

PostPostano: 17:25 uto, 2. 11. 2010    Naslov: Citirajte i odgovorite

[table=;]Ulaz ; Izlaz ; Stog
X ; X ;
* ; X ; *
Y ; XY ; *
+ ; XY* ; +
Z ; XY*Z ; +
/ ; XY*Z ; +/
( ; XY*Z ; +/(
X ; XY*ZX ; +/(
- ; XY*ZX ; +/(-
Y ; XY*ZXY ; +/(-
- ; XY*ZXY- ; +/(-
Z ;XY*ZXY-Z ; +/(-
) ; XY*ZXY-Z- ; +/
- ; XY*ZXY-Z-/+ ; -
Z ; XY*ZXY-Z-/+Z ; -
; XY*ZXY-Z-/+Z- ; [/table]
Ulaz Izlaz Stog
X X  
* X *
Y XY *
+ XY* +
Z XY*Z +
/ XY*Z +/
( XY*Z +/(
X XY*ZX +/(
- XY*ZX +/(-
Y XY*ZXY +/(-
- XY*ZXY- +/(-
Z XY*ZXY-Z +/(-
) XY*ZXY-Z- +/
- XY*ZXY-Z-/+ -
Z XY*ZXY-Z-/+Z -
  XY*ZXY-Z-/+Z-  


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


Pridružen/a: 05. 10. 2009. (17:48:30)
Postovi: (143)16
Spol: muško
Sarma = la pohva - posuda
83 = 86 - 3

PostPostano: 17:34 uto, 2. 11. 2010    Naslov: Citirajte i odgovorite

evo dijkstra za prvi:

[table=;]Ulaz ; Stog ; Izlaz
x ; ; x
* ; * ; x
y ; * ; xy
+ ; + ; xy*
z ; + ; xy*z
/ ; +/ ; xy*z
( ; +/( ; xy*z
x ; +/( ; xy*zx
- ; +/(- ; xy*zx
y ; +/(- ; xy*zxy
- ; +/(- ; xy*zxy-
z ; +/(- ; xy*zxy-z
) ; +/ ; xy*zxy-z-
- ; - ; xy*zxy-z-/+
z ; - ; xy*zxy-z-/+z
; ; xy*zxy-z-/+z-
[/table]
Pejstam cijeli kod ako treba, al to bi bilo malo glomazno, pa evo prvo ideja:
U queue Q1 spremamo elemente, u Q2 njihove kratnosti.
Dakle, dok god (while) nas stack S nije prazan (!EMPTY(S)) radimo sljedece:

Spremimo TOP(S) u neku varijablu, npr x
provjerimo je li Q1 prazan;
[b]ako je:[/b] enqueueamo element x u Q1 i 1 (kao trenutnu kratnost elementa x) u Q2

[b]ako nije:[/b]
spremimo front od Q1 u neku pomocnu varijablu (npr pom), enqueueamo ga na kraj Q1, i maknemo s pocetka (efektivno, pomaknuli smo prvi element na kraj reda i zabiljezili njegovu vrijednost u pom)
Isto napravimo u Q2, ali ne moramo spremati vrijednost

Sada se krecemo po Q1 dok ne naidjemo na pom
(kretanje ostvarujemo prebacivanjem elementa s fronta od Q1 na kraj)
paralelno radimo iste operacije na Q2

Ako smo naisli na isti element kao x u Q1, onda samo njegovu kratnost u Q2 povecamo za jedan

Ako nismo, u cijelom obilasku Q1, naisli na element x, onda ga stavimo u Q1, a njegovu kratnost (1) stavimo u Q2

to je generalna ideja (ne nuzno jedina moguca), ak ce trebat kod il nesto, vici...
evo dijkstra za prvi:

Ulaz Stog Izlaz
x   x
* * x
y * xy
+ + xy*
z + xy*z
/ +/ xy*z
( +/( xy*z
x +/( xy*zx
- +/(- xy*zx
y +/(- xy*zxy
- +/(- xy*zxy-
z +/(- xy*zxy-z
) +/ xy*zxy-z-
- - xy*zxy-z-/+
z - xy*zxy-z-/+z
   xy*zxy-z-/+z-

Pejstam cijeli kod ako treba, al to bi bilo malo glomazno, pa evo prvo ideja:
U queue Q1 spremamo elemente, u Q2 njihove kratnosti.
Dakle, dok god (while) nas stack S nije prazan (!EMPTY(S)) radimo sljedece:

Spremimo TOP(S) u neku varijablu, npr x
provjerimo je li Q1 prazan;
ako je: enqueueamo element x u Q1 i 1 (kao trenutnu kratnost elementa x) u Q2

ako nije:
spremimo front od Q1 u neku pomocnu varijablu (npr pom), enqueueamo ga na kraj Q1, i maknemo s pocetka (efektivno, pomaknuli smo prvi element na kraj reda i zabiljezili njegovu vrijednost u pom)
Isto napravimo u Q2, ali ne moramo spremati vrijednost

Sada se krecemo po Q1 dok ne naidjemo na pom
(kretanje ostvarujemo prebacivanjem elementa s fronta od Q1 na kraj)
paralelno radimo iste operacije na Q2

Ako smo naisli na isti element kao x u Q1, onda samo njegovu kratnost u Q2 povecamo za jedan

Ako nismo, u cijelom obilasku Q1, naisli na element x, onda ga stavimo u Q1, a njegovu kratnost (1) stavimo u Q2

to je generalna ideja (ne nuzno jedina moguca), ak ce trebat kod il nesto, vici...


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


Pridružen/a: 03. 03. 2008. (11:07:54)
Postovi: (38)16
Sarma = la pohva - posuda
= 5 - 2

PostPostano: 18:02 uto, 2. 11. 2010    Naslov: Citirajte i odgovorite

može kod, u mojem nešto ne štima... :(
može kod, u mojem nešto ne štima... Sad


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


Pridružen/a: 24. 10. 2009. (14:37:50)
Postovi: (65)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
= 8 - 1

PostPostano: 18:05 uto, 2. 11. 2010    Naslov: Citirajte i odgovorite

..jel može kod? Izgubila sam se u ovom "ako nije" dijelu :cry:
I još pitanje: zar ne bi trebala u while petlji biti fja !EMPTY(*S) ??
..jel može kod? Izgubila sam se u ovom "ako nije" dijelu Crying or Very sad
I još pitanje: zar ne bi trebala u while petlji biti fja !EMPTY(*S) ??


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


Pridružen/a: 05. 10. 2009. (17:48:30)
Postovi: (143)16
Spol: muško
Sarma = la pohva - posuda
83 = 86 - 3

PostPostano: 19:00 uto, 2. 11. 2010    Naslov: Citirajte i odgovorite

evo koda:

[code:1]
#include <stdio.h>
#include "atp_queue.c"
#include "atp_stack.c"

void ispis(QUEUE Q){
while(!Q_EMPTY(Q))
{
printf(" %d ",FRONT(Q));
DEQUEUE(&Q);
}
printf("\n");
}


void kratnost(STACK *S, int k){
QUEUE Q1,Q2;
int i,pom,x,aux;
Q_MAKE_NULL(&Q1);
Q_MAKE_NULL(&Q2);
while(!S_EMPTY(*S)){
x=TOP(*S);
aux=0;
if(Q_EMPTY(Q1)){
ENQUEUE(x,&Q1);
ENQUEUE(1,&Q2);
}
else{
pom=FRONT(Q1);
if(x==pom){
ENQUEUE(pom,&Q1);
DEQUEUE(&Q1);
ENQUEUE(FRONT(Q2)+1,&Q2);
DEQUEUE(&Q2);
aux=1;
}
else{
ENQUEUE(FRONT(Q1),&Q1);
DEQUEUE(&Q1);
ENQUEUE(FRONT(Q2),&Q2);
DEQUEUE(&Q2);
}

while(FRONT(Q1)!=pom){
if(FRONT(Q1)==x){
ENQUEUE(FRONT(Q1),&Q1);
DEQUEUE(&Q1);
ENQUEUE(FRONT(Q2)+1,&Q2);
DEQUEUE(&Q2);
aux=1;
}
else{
ENQUEUE(FRONT(Q1),&Q1);
DEQUEUE(&Q1);
ENQUEUE(FRONT(Q2),&Q2);
DEQUEUE(&Q2);
}
}
if(aux==0){
ENQUEUE(x,&Q1);
ENQUEUE(1,&Q2);
}
}
POP(S);
}

while(!Q_EMPTY(Q1)){
for(i=0; i<k && i<FRONT(Q2); ++i) PUSH(FRONT(Q1),S);
DEQUEUE(&Q1);
DEQUEUE(&Q2);
}

return;
}

int main(){
int i,n,a,k;
STACK S;
S_MAKE_NULL(&S);
scanf("%d", &n);
for(i=0; i<n; ++i){
scanf("%d", &a);
PUSH(a,&S);
}
printf("Maksimalna kratnost=");
scanf("%d",&k);
kratnost(&S,k);
printf("\n");
while(!S_EMPTY(S)){
printf("%d",TOP(S));
POP(&S);
}
scanf("%%");
return 0;
}
[/code:1]
evo koda:

Kod:

#include <stdio.h>
#include "atp_queue.c"
#include "atp_stack.c"

void ispis(QUEUE Q){
     while(!Q_EMPTY(Q))
     {
                        printf(" %d ",FRONT(Q));
                        DEQUEUE(&Q);
                        }
     printf("\n");
     }
     

void kratnost(STACK *S, int k){
     QUEUE Q1,Q2;
     int i,pom,x,aux;
     Q_MAKE_NULL(&Q1);
     Q_MAKE_NULL(&Q2);
     while(!S_EMPTY(*S)){
                         x=TOP(*S);
                         aux=0;
                         if(Q_EMPTY(Q1)){
                                         ENQUEUE(x,&Q1);
                                         ENQUEUE(1,&Q2);
                                         }
                         else{
                              pom=FRONT(Q1);
                              if(x==pom){
                                         ENQUEUE(pom,&Q1);
                                         DEQUEUE(&Q1);
                                         ENQUEUE(FRONT(Q2)+1,&Q2);
                                         DEQUEUE(&Q2);
                                         aux=1;
                                         }
                              else{
                                   ENQUEUE(FRONT(Q1),&Q1);
                                   DEQUEUE(&Q1);
                                   ENQUEUE(FRONT(Q2),&Q2);
                                   DEQUEUE(&Q2);
                                   }

                              while(FRONT(Q1)!=pom){
                                                    if(FRONT(Q1)==x){
                                                                     ENQUEUE(FRONT(Q1),&Q1);
                                                                     DEQUEUE(&Q1);
                                                                     ENQUEUE(FRONT(Q2)+1,&Q2);
                                                                     DEQUEUE(&Q2);
                                                                     aux=1;
                                                                     }
                                                    else{
                                                         ENQUEUE(FRONT(Q1),&Q1);
                                                         DEQUEUE(&Q1);
                                                         ENQUEUE(FRONT(Q2),&Q2);
                                                         DEQUEUE(&Q2);
                                                         }
                                                         }
                              if(aux==0){
                                         ENQUEUE(x,&Q1);
                                         ENQUEUE(1,&Q2);
                                         }
                                         }
                              POP(S);
                                         }

     while(!Q_EMPTY(Q1)){
                         for(i=0; i<k && i<FRONT(Q2); ++i) PUSH(FRONT(Q1),S);
                         DEQUEUE(&Q1);
                         DEQUEUE(&Q2);
                         }

     return;
     }
     
int main(){
    int i,n,a,k;
    STACK S;
    S_MAKE_NULL(&S);
    scanf("%d", &n);
    for(i=0; i<n; ++i){
             scanf("%d", &a);
             PUSH(a,&S);
             }
    printf("Maksimalna kratnost=");
    scanf("%d",&k);
    kratnost(&S,k);
    printf("\n");
    while(!S_EMPTY(S)){
                       printf("%d",TOP(S));
                       POP(&S);
                       }
    scanf("%%");
    return 0;
}


[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: 19:23 uto, 2. 11. 2010    Naslov: Citirajte i odgovorite

http://web.math.hr/nastava/spa/files/zadaci_za_vjezbu_kolokvij1.pdf
zanimaju me 7. i 8.zadatak,kako riješiti bez upotrebe drugih atp-ova?
problem mi je što su obadva stack,da nisu znala bi, a pomoću pomoćnih varijabla baš i nemogu kada neznam koliko ih treba..
http://web.math.hr/nastava/spa/files/zadaci_za_vjezbu_kolokvij1.pdf
zanimaju me 7. i 8.zadatak,kako riješiti bez upotrebe drugih atp-ova?
problem mi je što su obadva stack,da nisu znala bi, a pomoću pomoćnih varijabla baš i nemogu kada neznam koliko ih treba..


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


Pridružen/a: 18. 02. 2009. (21:51:01)
Postovi: (8)16
Sarma = la pohva - posuda
= 2 - 2

PostPostano: 19:39 uto, 2. 11. 2010    Naslov: Citirajte i odgovorite

jel moze netko napisat rjesenje 4.zad b) kolokvij od prosle godine???
( molim vas citav kod :oops: ) hvala!!!
jel moze netko napisat rjesenje 4.zad b) kolokvij od prosle godine???
( molim vas citav kod Embarassed ) hvala!!!


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


Pridružen/a: 05. 10. 2009. (17:48:30)
Postovi: (143)16
Spol: muško
Sarma = la pohva - posuda
83 = 86 - 3

PostPostano: 19:51 uto, 2. 11. 2010    Naslov: Citirajte i odgovorite

@anchy:
za par-nepar, mozes prelijevati iz jednog stoga u drugi.
Kad ides npr sa S1 na S2, kad naidjes na prvi parni element, spremis ga u pomocnu varijablu. Nakon sto prelijes ostatak S1, stavis taj element na vrh S2.
Onda ides nazad iz S2 u S1, radis isto, al samo prvi neparni element stavis na vrh
(Ovime smo postigli da je nakon 2 runde prebacivanja u S1 imamo sigurno jedan parni element na dnu, a neparni na vrhu)
Sad ovo ponavljas sve dok je potrebno (a dal je potrebno isto biljezis u neku pomocnu varijablu; npr. ako poslije prvog parnog ne naidjes vise na neparni element, nije potrebna zamjena); na kraju dobijes stack u kojem su na vrhu parni, a na dnu svi neparni.

Ovaj osmi se valjda jedino rekurzivno moze bez dodatnih atp-ova...
(U svaki nivo rekurzije udjes sa stackom za jedan manjim od prosli put)
@anchy:
za par-nepar, mozes prelijevati iz jednog stoga u drugi.
Kad ides npr sa S1 na S2, kad naidjes na prvi parni element, spremis ga u pomocnu varijablu. Nakon sto prelijes ostatak S1, stavis taj element na vrh S2.
Onda ides nazad iz S2 u S1, radis isto, al samo prvi neparni element stavis na vrh
(Ovime smo postigli da je nakon 2 runde prebacivanja u S1 imamo sigurno jedan parni element na dnu, a neparni na vrhu)
Sad ovo ponavljas sve dok je potrebno (a dal je potrebno isto biljezis u neku pomocnu varijablu; npr. ako poslije prvog parnog ne naidjes vise na neparni element, nije potrebna zamjena); na kraju dobijes stack u kojem su na vrhu parni, a na dnu svi neparni.

Ovaj osmi se valjda jedino rekurzivno moze bez dodatnih atp-ova...
(U svaki nivo rekurzije udjes sa stackom za jedan manjim od prosli put)


[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: 19:59 uto, 2. 11. 2010    Naslov: Re: 1. kolokvij 2010. Citirajte i odgovorite

4. zadatak:
a)
[code:1]void saren( BTREE B)
{
node n;
n=ROOT(T);
if( ( LABEL(n,T)%2==0) && ( LEFT_CHILD(n,T)%2==0 || RIGHT_CHILD(n,T)%2==0) )
printf("...", LABEL(n,T));
saren(LEFT_SUBTREE(T, *TL));
saren(RIGHT_SUBTREE(T, *TR));
return;
}[/code:1]

nije mi jasno kod poziva fje saren, zar je ispravno napisati
[code:1]
saren(LEFT_SUBTREE( T, *TL));
[/code:1]
dakle fja LEFT_SUBTREE treba primiti prvo adresu nekog TL, il...
4. zadatak:
a)
Kod:
void saren( BTREE B)
{
    node n;
    n=ROOT(T);
    if( ( LABEL(n,T)%2==0) && ( LEFT_CHILD(n,T)%2==0 || RIGHT_CHILD(n,T)%2==0) )
          printf("...", LABEL(n,T));
    saren(LEFT_SUBTREE(T, *TL));
    saren(RIGHT_SUBTREE(T, *TR));
    return;
}


nije mi jasno kod poziva fje saren, zar je ispravno napisati
Kod:

saren(LEFT_SUBTREE( T, *TL));

dakle fja LEFT_SUBTREE treba primiti prvo adresu nekog TL, il...


[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: 20:45 uto, 2. 11. 2010    Naslov: Re: 1. kolokvij 2010. Citirajte i odgovorite

[quote="homesweethome"]4. zadatak:
a)
...
nije mi jasno kod poziva fje saren, zar je ispravno napisati...
[/quote]

ja bih reko da je rješenje krivo. Mislim da tak nekaj i piše u par postova ispod.

nezam funkcije koje se trebaju upotrijebiti al bi nekak ovak to izgledalo.
[code:1]
void saren( BTREE T ){

n = korijen od T;
int ok_l = 0;
int ok_d = 0;

if( postoji lijevo dijete od n ) ok_l = 1;
if( postoji desno dijete od n ) ok_d = 1;

if( oznaka od n djeljiva sa 2 ){
int ispisi = 1;
if( ok_l )
if( oznaka lijevog djeteta djeljiva sa 2 ) ispisi = 0;

if( ok_d )
if( oznaka desnog djeteta djeljiva sa 2 ) ispisi = 0;

if( ispisi ) printf( oznaka od n );
}

if( ok_l ) saren( lijevo_dijete_od_T );
if( ok_d ) saren( desno_dijete_od_T );

return;

}

[/code:1]
homesweethome (napisa):
4. zadatak:
a)
...
nije mi jasno kod poziva fje saren, zar je ispravno napisati...


ja bih reko da je rješenje krivo. Mislim da tak nekaj i piše u par postova ispod.

nezam funkcije koje se trebaju upotrijebiti al bi nekak ovak to izgledalo.
Kod:

void saren( BTREE T ){

       n = korijen od T;
       int ok_l = 0;
       int ok_d = 0;

       if( postoji lijevo dijete od n ) ok_l = 1;
       if( postoji desno dijete od n ) ok_d = 1;

       if( oznaka od n djeljiva sa 2 ){
           int ispisi = 1;
           if( ok_l )
                  if( oznaka lijevog djeteta djeljiva sa 2 ) ispisi = 0;
           
           if( ok_d )
                  if( oznaka desnog djeteta djeljiva sa 2 ) ispisi = 0;
           
           if( ispisi ) printf( oznaka od n );     
       }

       if( ok_l ) saren( lijevo_dijete_od_T );
       if( ok_d ) saren( desno_dijete_od_T );
 
       return;   

}



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


Pridružen/a: 03. 11. 2009. (11:19:45)
Postovi: (70)16
Spol: žensko
Sarma = la pohva - posuda
-1 = 3 - 4

PostPostano: 23:25 uto, 2. 11. 2010    Naslov: Citirajte i odgovorite

[quote="pbakic"]@anchy:
Ovaj osmi se valjda jedino rekurzivno moze bez dodatnih atp-ova...
(U svaki nivo rekurzije udjes sa stackom za jedan manjim od prosli put)[/quote]

a, kako bi to islo? :)
pbakic (napisa):
@anchy:
Ovaj osmi se valjda jedino rekurzivno moze bez dodatnih atp-ova...
(U svaki nivo rekurzije udjes sa stackom za jedan manjim od prosli put)


a, kako bi to islo? Smile



_________________
<3
[Vrh]
Korisnički profil Pošaljite privatnu poruku MSNM
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 3 / 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