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.domaća zadaća
WWW:
Idite na Prethodno  1, 2, 3  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
kakt00s
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 17. 10. 2007. (12:19:40)
Postovi: (183)16
Spol: muško
Sarma = la pohva - posuda
33 = 43 - 10
Lokacija: :ɐɾıɔɐʞoן

PostPostano: 1:57 uto, 9. 11. 2010    Naslov: Citirajte i odgovorite

[code:1][b]Ulazni podaci[/b]: niz stringova koji opisuje binarno stablo zadano u PREORDER obilasku proširenom oznakama praznih čvorova (NULL)

Na primjer, za ulazne podatke:
A B F NULL J NULL NULL ...[/code:1]

Ovo sam dobio u dz... praktički sam gotov sa cijelim zadatkom ali mi nije jasno što bi trebalo značiti NULL. Da li ja doslovno upisujem riječ NULL ili se gleda kao da upisujem '' (iliti ništa)?
Kod:
[b]Ulazni podaci[/b]: niz stringova koji opisuje binarno stablo zadano u PREORDER obilasku proširenom oznakama praznih čvorova (NULL)

Na primjer, za ulazne podatke:
A B F NULL J NULL NULL ...


Ovo sam dobio u dz... praktički sam gotov sa cijelim zadatkom ali mi nije jasno što bi trebalo značiti NULL. Da li ja doslovno upisujem riječ NULL ili se gleda kao da upisujem '' (iliti ništa)?



_________________
Muy importante!
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Milojko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 07. 11. 2008. (14:57:52)
Postovi: (453)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
17 = 68 - 51
Lokacija: Hilbertov hotel

PostPostano: 4:04 uto, 9. 11. 2010    Naslov: Citirajte i odgovorite

@Bole13:
nisam skužio točno pitanje. Što te zanima, jesu to jedine operacije koje će bit promatrane ili?

@nike:
jel nije niz manje-više ekvivalentan pojam pojmu polje?
ak ga prikažeš ko što je u skripti, onda je obilazak takav da ispisuješ samo čvorove gdje je na 2i+2 nul znak

@eve:
sscanf i sprintf su bolji za učitavanje/pisanje iz/u string. atoi je ok funkcija, ali itoa zna predstavljat poteškoće. Ak ti ništ ne piše u zadatku o načinu učitavanja, onda možeš pretpostaviti na primjer da se učitava sa razmacima između svaka dva znaka izraza ili tako nešto. Sve što nije izričito definirano možeš si prilagodit

@kakt00s:
NULL ti označava da na tom mjestu u stablu čvor nema dijete. time ti je stablo zadano na jedinstveni način, funkcija sagradi iz mog prošlog posta radi točno to što trebaš. naravno, moraš strcmp-at ulazne podatke sa NULL (opet, ovdje nije zadano kako će ti podaci biti uneseni. Ti možeš reći da će korisnik unositi string za stringom dok se ne unese čitavo stablo, da će svoj unos napisati u neku datoteku pa ćeš onda čitati iz nje, da će u main-u upisati niz stringova pa ćeš prema njima graditi stablo. Mislim da je najlakše da korisnika pitaš sa scanfom unutar sagradi)
@Bole13:
nisam skužio točno pitanje. Što te zanima, jesu to jedine operacije koje će bit promatrane ili?

@nike:
jel nije niz manje-više ekvivalentan pojam pojmu polje?
ak ga prikažeš ko što je u skripti, onda je obilazak takav da ispisuješ samo čvorove gdje je na 2i+2 nul znak

@eve:
sscanf i sprintf su bolji za učitavanje/pisanje iz/u string. atoi je ok funkcija, ali itoa zna predstavljat poteškoće. Ak ti ništ ne piše u zadatku o načinu učitavanja, onda možeš pretpostaviti na primjer da se učitava sa razmacima između svaka dva znaka izraza ili tako nešto. Sve što nije izričito definirano možeš si prilagodit

@kakt00s:
NULL ti označava da na tom mjestu u stablu čvor nema dijete. time ti je stablo zadano na jedinstveni način, funkcija sagradi iz mog prošlog posta radi točno to što trebaš. naravno, moraš strcmp-at ulazne podatke sa NULL (opet, ovdje nije zadano kako će ti podaci biti uneseni. Ti možeš reći da će korisnik unositi string za stringom dok se ne unese čitavo stablo, da će svoj unos napisati u neku datoteku pa ćeš onda čitati iz nje, da će u main-u upisati niz stringova pa ćeš prema njima graditi stablo. Mislim da je najlakše da korisnika pitaš sa scanfom unutar sagradi)



_________________
Sedam je prost broj Smile

Bolonja je smeće i to pod hitno treba mijenjat
[Vrh]
Korisnički profil Pošaljite privatnu poruku MSNM
Bole13
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 11. 2008. (00:33:50)
Postovi: (5A)16
Spol: muško
Sarma = la pohva - posuda
= 5 - 0

PostPostano: 10:41 uto, 9. 11. 2010    Naslov: Citirajte i odgovorite

Da, ako cu koristit switxh-case onda trebam znati sve moguce opcije. U svim primjerima koje sam do sad vidio su samo tih 5 bile prisutne, mislim lako se dodaju druge opcije.
Osim ako ima neko bolje rjesenje koje mi ne pada na pame trenutno.
Da, ako cu koristit switxh-case onda trebam znati sve moguce opcije. U svim primjerima koje sam do sad vidio su samo tih 5 bile prisutne, mislim lako se dodaju druge opcije.
Osim ako ima neko bolje rjesenje koje mi ne pada na pame trenutno.


[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: 12:38 uto, 9. 11. 2010    Naslov: Citirajte i odgovorite

[quote="Bole13"]Nego jos jedno pitanje. Trebam pomocu stoga izracunat vrijednost postfix izraza. Jos me samo muci kada procitam znak onda se treba odredit koja je to operacija i primjenit je na gornja 2 elementa stoga sad jel u redu to pomocu switch-case rjesit pa stavit opcije + - * / ^ ili moram racunat na jos neke operacije?[/quote]
Možeš još staviti i %. :) Ne mogu se sjetiti još nekih binarnih operacija.

[quote="eve"]Jos me samo zanima - pise da ucitavamo prefix izraz zapisan u string - da li to znaci da se izmedju svaka dva elementa nalazi razmak -npr + 12 5?[/quote]
Vrlo vjerojatno da, ako tako izgleda test-primjer.

[quote="eve"]Kako da onda na stog spremim bas broj 12?[/quote]
Funkcija strtok je dosta fora. Pogledaj [url=http://www.cplusplus.com/reference/clibrary/cstring/strtok/]ovdje[/url].
Bole13 (napisa):
Nego jos jedno pitanje. Trebam pomocu stoga izracunat vrijednost postfix izraza. Jos me samo muci kada procitam znak onda se treba odredit koja je to operacija i primjenit je na gornja 2 elementa stoga sad jel u redu to pomocu switch-case rjesit pa stavit opcije + - * / ^ ili moram racunat na jos neke operacije?

Možeš još staviti i %. Smile Ne mogu se sjetiti još nekih binarnih operacija.

eve (napisa):
Jos me samo zanima - pise da ucitavamo prefix izraz zapisan u string - da li to znaci da se izmedju svaka dva elementa nalazi razmak -npr + 12 5?

Vrlo vjerojatno da, ako tako izgleda test-primjer.

eve (napisa):
Kako da onda na stog spremim bas broj 12?

Funkcija strtok je dosta fora. 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: 19:50 uto, 9. 11. 2010    Naslov: Citirajte i odgovorite

[quote="eve"]Jos me samo zanima - pise da ucitavamo prefix izraz zapisan u string - da li to znaci da se izmedju svaka dva elementa nalazi razmak -npr + 12 5? Kako da onda na stog spremim bas broj 12?[/quote]

znam da je pitanje glupo,ali da znam što učitavam: ja imam zadatak s logičkim izrazima, znači &,!...i 0 ili 1, a za učitati mi je u primjeru zadano bez razmaka,pa je li sigurno da tako trebam učitati,tj.kao string,a ne charove?

i smijem li upotrijebiti f-ju isdigit? i strlen tek tolko da znam kada stati ići po stringu?
bilo bi jednostavnije :D
eve (napisa):
Jos me samo zanima - pise da ucitavamo prefix izraz zapisan u string - da li to znaci da se izmedju svaka dva elementa nalazi razmak -npr + 12 5? Kako da onda na stog spremim bas broj 12?


znam da je pitanje glupo,ali da znam što učitavam: ja imam zadatak s logičkim izrazima, znači &,!...i 0 ili 1, a za učitati mi je u primjeru zadano bez razmaka,pa je li sigurno da tako trebam učitati,tj.kao string,a ne charove?

i smijem li upotrijebiti f-ju isdigit? i strlen tek tolko da znam kada stati ići po stringu?
bilo bi jednostavnije Very Happy


[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: 20:59 uto, 9. 11. 2010    Naslov: Citirajte i odgovorite

zanemarite ovaj gore post,napisala sam bez tih f-ja. sada mi compiler javlja grešku
[code:1] data member may not have variably modified type `char[((unsigned int)((int)MAXLENGHT))]' [/code:1]

a kod mi je:
[code:1] int MAXLENGHT=100;

typedef struct{
int top;
char elementi[MAXLENGHT];
} STACK; [/code:1]

to je kao u skripti,samo što nisam napisala #define MAXLENGHT
jer to iskreno neznam,probala sam #define MAXLENGHT int; i slične kombinacije ali se compiler i dalje dere :(
edit3:ovaj problem sam rješila :D

također, kada trebam izračunati npr. 0&1, a & i 0 su mi na stogu,kako da to napravim? napisala sam y=x(TOP(S))1, gdje je x prijašnji TOP i jasno mi je da ne radi,ali nisam znala kako drugačije?
pretp.da prvo trebam char pretvorit u int,tj.ovaj x..a kako s izrazima?

edit2:i je li ! binarna operacija?ili se odnosi samo na 0 ili 1,a ne na oboje,pa moram i n anjega posebno paziti?
zanemarite ovaj gore post,napisala sam bez tih f-ja. sada mi compiler javlja grešku
Kod:
 data member may not have variably modified type `char[((unsigned int)((int)MAXLENGHT))]'


a kod mi je:
Kod:
 int MAXLENGHT=100;

typedef struct{
        int top;
        char elementi[MAXLENGHT];
} STACK;


to je kao u skripti,samo što nisam napisala #define MAXLENGHT
jer to iskreno neznam,probala sam #define MAXLENGHT int; i slične kombinacije ali se compiler i dalje dere Sad
edit3:ovaj problem sam rješila Very Happy

također, kada trebam izračunati npr. 0&1, a & i 0 su mi na stogu,kako da to napravim? napisala sam y=x(TOP(S))1, gdje je x prijašnji TOP i jasno mi je da ne radi,ali nisam znala kako drugačije?
pretp.da prvo trebam char pretvorit u int,tj.ovaj x..a kako s izrazima?

edit2:i je li ! binarna operacija?ili se odnosi samo na 0 ili 1,a ne na oboje,pa moram i n anjega posebno paziti?


[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: 21:53 uto, 9. 11. 2010    Naslov: Citirajte i odgovorite

[quote=".anchy."]također, kada trebam izračunati npr. 0&1, a & i 0 su mi na stogu,kako da to napravim? napisala sam y=x(TOP(S))1, gdje je x prijašnji TOP i jasno mi je da ne radi,ali nisam znala kako drugačije?[/quote]
Prvo trebaš izvuči 0 i & iz stoga i negdje pohraniti. Zatim obaviš operaciju 0&1 (treba ti switch naredba).

[quote=".anchy."]i je li ! binarna operacija?[/quote]
Nije, ! je unaran operator. On je posebna priča. Ako iz logičkog izraza učitaš operand, trebaš provjeriti je li ! na vrhu. Ako je, izvuci ga iz stoga i primjeni ga na operand koji si učitala iz logičkog izraza.
.anchy. (napisa):
također, kada trebam izračunati npr. 0&1, a & i 0 su mi na stogu,kako da to napravim? napisala sam y=x(TOP(S))1, gdje je x prijašnji TOP i jasno mi je da ne radi,ali nisam znala kako drugačije?

Prvo trebaš izvuči 0 i & iz stoga i negdje pohraniti. Zatim obaviš operaciju 0&1 (treba ti switch naredba).

.anchy. (napisa):
i je li ! binarna operacija?

Nije, ! je unaran operator. On je posebna priča. Ako iz logičkog izraza učitaš operand, trebaš provjeriti je li ! na vrhu. Ako je, izvuci ga iz stoga i primjeni ga na operand koji si učitala iz logičkog izraza.


[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: 22:32 uto, 9. 11. 2010    Naslov: Citirajte i odgovorite

hvala,ali rješila sam već sve to uz pomoć onog linka kojeg si dao eve,izuzev ovog s !,to lagano ubacim kasnije. sad imam drugi problem,napisala sam for petlju koja ide po stringu i sprema izraze na stog,i broj ako na vrhu nije broj. sada kada izađe iz petlje,ostane dosta toga na stogu,npr.za |0&1|^010
on izračuna samo |^010 = 1. i sada sam mislila while petlju ubaciti iza toga,koja uzima zadnja 2 broja,i operator koji je tada na vrhu stoga, izračuna vrijednost i vrati rješenje na stog.ali mi je beskonačna a neznam zašto? evo koda:(ps ovo sa ! cu ubacit poslije)
[code:1]
while(1){
z=TOP(S);
POP(&S);
if(EMPTY(S)){
PUSH(z,&S);
break;
}
x=atoi(&z);
z=TOP(S);
i=atoi(&z);
POP(&S);
if(TOP(S)=='&') y1=i&z;
else if(TOP(S)=='|') y1=i|x;
else if(TOP(S)=='^') y1=i^x;
itoa(y1,&y,10);
PUSH(y,&S);
printf("%c\n", y);
}[/code:1]
hvala,ali rješila sam već sve to uz pomoć onog linka kojeg si dao eve,izuzev ovog s !,to lagano ubacim kasnije. sad imam drugi problem,napisala sam for petlju koja ide po stringu i sprema izraze na stog,i broj ako na vrhu nije broj. sada kada izađe iz petlje,ostane dosta toga na stogu,npr.za |0&1|^010
on izračuna samo |^010 = 1. i sada sam mislila while petlju ubaciti iza toga,koja uzima zadnja 2 broja,i operator koji je tada na vrhu stoga, izračuna vrijednost i vrati rješenje na stog.ali mi je beskonačna a neznam zašto? evo koda:(ps ovo sa ! cu ubacit poslije)
Kod:

 while(1){
             z=TOP(S);
             POP(&S);
             if(EMPTY(S)){
                          PUSH(z,&S);
                          break;
             }
             x=atoi(&z);
             z=TOP(S);
             i=atoi(&z);
             POP(&S);
             if(TOP(S)=='&') y1=i&z;
             else if(TOP(S)=='|') y1=i|x;
             else if(TOP(S)=='^') y1=i^x;
             itoa(y1,&y,10);
             PUSH(y,&S);
             printf("%c\n", y);
        }


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


Pridružen/a: 17. 10. 2007. (12:19:40)
Postovi: (183)16
Spol: muško
Sarma = la pohva - posuda
33 = 43 - 10
Lokacija: :ɐɾıɔɐʞoן

PostPostano: 22:55 uto, 9. 11. 2010    Naslov: Citirajte i odgovorite

[quote="Milojko"]@Bole13:
@kakt00s:
NULL ti označava da na tom mjestu u stablu čvor nema dijete. time ti je stablo zadano na jedinstveni način, funkcija sagradi iz mog prošlog posta radi točno to što trebaš. naravno, moraš strcmp-at ulazne podatke sa NULL (opet, ovdje nije zadano kako će ti podaci biti uneseni. Ti možeš reći da će korisnik unositi string za stringom dok se ne unese čitavo stablo, da će svoj unos napisati u neku datoteku pa ćeš onda čitati iz nje, da će u main-u upisati niz stringova pa ćeš prema njima graditi stablo. Mislim da je najlakše da korisnika pitaš sa scanfom unutar sagradi)[/quote]

Ma jedina stvar koja me zanima je to da li ja doslovno unosim riječ NULL umjesto praznog čvora... ili to može biti '*','+','-',...?
Milojko (napisa):
@Bole13:
@kakt00s:
NULL ti označava da na tom mjestu u stablu čvor nema dijete. time ti je stablo zadano na jedinstveni način, funkcija sagradi iz mog prošlog posta radi točno to što trebaš. naravno, moraš strcmp-at ulazne podatke sa NULL (opet, ovdje nije zadano kako će ti podaci biti uneseni. Ti možeš reći da će korisnik unositi string za stringom dok se ne unese čitavo stablo, da će svoj unos napisati u neku datoteku pa ćeš onda čitati iz nje, da će u main-u upisati niz stringova pa ćeš prema njima graditi stablo. Mislim da je najlakše da korisnika pitaš sa scanfom unutar sagradi)


Ma jedina stvar koja me zanima je to da li ja doslovno unosim riječ NULL umjesto praznog čvora... ili to može biti '*','+','-',...?



_________________
Muy importante!
[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:08 uto, 9. 11. 2010    Naslov: Citirajte i odgovorite

@anchy: Nekak mi se čini da si sve odmah potrpala u stog. :tstnd: [url=http://degiorgi.math.hr/forum/viewtopic.php?t=15737&postdays=0&postorder=asc&&start=40]Link[/url]
Također, atoi ti je nepotrebna. Ta funkcija je dobra ako ne znaš koliko je broj dug, a tebi se može pojaviti samo 0 ili 1. To nije neki problem pretvoriti u int (samo oduzmeš '0') i natrag u char.

@kakt00s: NULL možeš shvatiti kao LAMBDA. Ne postoji taj čvor.
@anchy: Nekak mi se čini da si sve odmah potrpala u stog. To se tak ne dela Link
Također, atoi ti je nepotrebna. Ta funkcija je dobra ako ne znaš koliko je broj dug, a tebi se može pojaviti samo 0 ili 1. To nije neki problem pretvoriti u int (samo oduzmeš '0') i natrag u char.

@kakt00s: NULL možeš shvatiti kao LAMBDA. Ne postoji taj čvor.


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


Pridružen/a: 17. 10. 2007. (12:19:40)
Postovi: (183)16
Spol: muško
Sarma = la pohva - posuda
33 = 43 - 10
Lokacija: :ɐɾıɔɐʞoן

PostPostano: 0:39 sri, 10. 11. 2010    Naslov: Citirajte i odgovorite

[quote="pmli"]
@kakt00s: NULL možeš shvatiti kao LAMBDA. Ne postoji taj čvor.[/quote]

Opet se nismo skužili. Ja shvaćam što taj null predstavlja...

ali ajmo ovako... :D

da li ja baš upisujem riječ 'NULL' kod učitavanja podataka?

Ne znam kako bi drugačije postavio pitanje


Unesi znak: 'a'
Unesi znak: 'b'
Unesi znak : 'null'
....

Jel sad jasnije moje pitanje? :)
pmli (napisa):

@kakt00s: NULL možeš shvatiti kao LAMBDA. Ne postoji taj čvor.


Opet se nismo skužili. Ja shvaćam što taj null predstavlja...

ali ajmo ovako... Very Happy

da li ja baš upisujem riječ 'NULL' kod učitavanja podataka?

Ne znam kako bi drugačije postavio pitanje


Unesi znak: 'a'
Unesi znak: 'b'
Unesi znak : 'null'
....

Jel sad jasnije moje pitanje? Smile



_________________
Muy importante!
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Milojko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 07. 11. 2008. (14:57:52)
Postovi: (453)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
17 = 68 - 51
Lokacija: Hilbertov hotel

PostPostano: 8:12 sri, 10. 11. 2010    Naslov: Citirajte i odgovorite

[quote="zadaća"]Na primjer, za ulazne podatke:
[b]A B F NULL J NULL NULL ...[/b][/quote]
zar iz ovog nije očito što unosiš?!
zadaća (napisa):
Na primjer, za ulazne podatke:
A B F NULL J NULL NULL ...

zar iz ovog nije očito što unosiš?!



_________________
Sedam je prost broj Smile

Bolonja je smeće i to pod hitno treba mijenjat
[Vrh]
Korisnički profil Pošaljite privatnu poruku MSNM
.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: 9:01 sri, 10. 11. 2010    Naslov: Citirajte i odgovorite

[quote="pmli"]@anchy: Nekak mi se čini da si sve odmah potrpala u stog. :tstnd: [url=http://degiorgi.math.hr/forum/viewtopic.php?t=15737&postdays=0&postorder=asc&&start=40]Link[/url]
Također, atoi ti je nepotrebna. Ta funkcija je dobra ako ne znaš koliko je broj dug, a tebi se može pojaviti samo 0 ili 1. To nije neki problem pretvoriti u int (samo oduzmeš '0') i natrag u char.[/quote]

radila sam tako,osim što kada mi je na vrhu operand,i učitam operand pa izvršim operaciju i dobijem operand,i onda neznam kako pomoću petlje glumiti da sam ga učitala. pretp.while, to ću danas navečer probati,prije se nisam sjetila tog.
a kako da int pretvorim u char?
pmli (napisa):
@anchy: Nekak mi se čini da si sve odmah potrpala u stog. To se tak ne dela Link
Također, atoi ti je nepotrebna. Ta funkcija je dobra ako ne znaš koliko je broj dug, a tebi se može pojaviti samo 0 ili 1. To nije neki problem pretvoriti u int (samo oduzmeš '0') i natrag u char.


radila sam tako,osim što kada mi je na vrhu operand,i učitam operand pa izvršim operaciju i dobijem operand,i onda neznam kako pomoću petlje glumiti da sam ga učitala. pretp.while, to ću danas navečer probati,prije se nisam sjetila tog.
a kako da int pretvorim u char?


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


Pridružen/a: 10. 12. 2008. (17:02:03)
Postovi: (22)16
Sarma = la pohva - posuda
= 3 - 3

PostPostano: 9:38 sri, 10. 11. 2010    Naslov: Citirajte i odgovorite

Kako implementirati funkcije LEFT_SUBTREE i RIGHT_SUBTREE kod BTREE pomoću polja?

Što bi one trebale vraćati? U svakom slučaju ne mogu vraćati indeks čvora jer to rade funkcije LEFT_CHILD i RIGHT_CHILD...
Kako implementirati funkcije LEFT_SUBTREE i RIGHT_SUBTREE kod BTREE pomoću polja?

Što bi one trebale vraćati? U svakom slučaju ne mogu vraćati indeks čvora jer to rade funkcije LEFT_CHILD i RIGHT_CHILD...


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


Pridružen/a: 07. 11. 2008. (14:57:52)
Postovi: (453)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
17 = 68 - 51
Lokacija: Hilbertov hotel

PostPostano: 10:04 sri, 10. 11. 2010    Naslov: Citirajte i odgovorite

pogledaj definiciju funkcija sa [url=http://web.math.hr/nastava/spa/files/salabahter.pdf]službenog šalabahtera[/url]. tamo piše da im je povratna vrijednost [b]void[/b], daklem, po defaultu ne trebaju ništ vratit, samo moraju napraviti nova stabla
pogledaj definiciju funkcija sa službenog šalabahtera. tamo piše da im je povratna vrijednost void, daklem, po defaultu ne trebaju ništ vratit, samo moraju napraviti nova stabla



_________________
Sedam je prost broj Smile

Bolonja je smeće i to pod hitno treba mijenjat
[Vrh]
Korisnički profil Pošaljite privatnu poruku MSNM
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: 15:24 sri, 10. 11. 2010    Naslov: Citirajte i odgovorite

[quote=".anchy."]radila sam tako,osim što kada mi je na vrhu operand,i učitam operand pa izvršim operaciju i dobijem operand,i onda neznam kako pomoću petlje glumiti da sam ga učitala. pretp.while, to ću danas navečer probati,prije se nisam sjetila tog.[/quote]
Evo, nadam se razumljiviji, pseudokod:
[code:1]dok se ima nešto za učitati
učitaj
ako je učitan operator
stavi ga na stog
inače
dok je stog neprazan i na vrhu je operand ili '!'
ako je na vrhu operand
izvuci taj operand i operator ispod njega
primjeni izvučeni operator na izvučeni i učitani operand, te dobivenu vrijednost spremi na mjesto učitanog operanda
inače
izvuci '!'
primjeni '!' na učitani operand i dobivenu vrijedost spremi na mjesto učitanog operanda
stavi učitani operand na stog[/code:1]

[quote=".anchy."]a kako da int pretvorim u char?[/quote]
Što je inverzno operaciji oduzimanja? :)
.anchy. (napisa):
radila sam tako,osim što kada mi je na vrhu operand,i učitam operand pa izvršim operaciju i dobijem operand,i onda neznam kako pomoću petlje glumiti da sam ga učitala. pretp.while, to ću danas navečer probati,prije se nisam sjetila tog.

Evo, nadam se razumljiviji, pseudokod:
Kod:
dok se ima nešto za učitati
    učitaj
    ako je učitan operator
        stavi ga na stog
    inače
        dok je stog neprazan i na vrhu je operand ili '!'
            ako je na vrhu operand
                izvuci taj operand i operator ispod njega
                primjeni izvučeni operator na izvučeni i učitani operand, te dobivenu vrijednost spremi na mjesto učitanog operanda
            inače
                izvuci '!'
                primjeni '!' na učitani operand i dobivenu vrijedost spremi na mjesto učitanog operanda
        stavi učitani operand na stog


.anchy. (napisa):
a kako da int pretvorim u char?

Što je inverzno operaciji oduzimanja? Smile


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


Pridružen/a: 27. 10. 2009. (19:28:17)
Postovi: (5C)16
Spol: muško
Sarma = la pohva - posuda
= 13 - 4

PostPostano: 17:21 sri, 10. 11. 2010    Naslov: Citirajte i odgovorite

Može li mi netko pomoć pri implementaciji f-je position MAKE_NULL (LIST *L)...
Lista je implementirana preko kursora (tako mi je zadano u zadaći i sada ne znam kako bi izbrisao sve elemente)
Može li mi netko pomoć pri implementaciji f-je position MAKE_NULL (LIST *L)...
Lista je implementirana preko kursora (tako mi je zadano u zadaći i sada ne znam kako bi izbrisao sve elemente)


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


Pridružen/a: 10. 10. 2009. (19:18:15)
Postovi: (62)16
Sarma = la pohva - posuda
= 4 - 4

PostPostano: 21:34 sri, 10. 11. 2010    Naslov: Citirajte i odgovorite

Imam problem sa zadaćom iz strukture podataka zadatak glasi ovako :

Implementirajte a.t.p. BTREE pomoću polja i napišite potprogram koji računa
broj listova u binarnom stablu. Ispišite i oznake samih listova.


Ulazni podaci: niz stringova koji opisuje binarno stablo zadano u PREORDER
obilasku proširenom oznakama praznih čvorova (NULL)
Izlazni podaci: broj listova učitanog stabla, pa oznake listova
Na primjer, za ulazne podatke:
A B F NULL J NULL NULL NULL C D NULL E G NULL NULL H NULL NULL NULL
treba ispisati:
3: J G H
Stablo iz primjera izgleda ovako:


ovaj zadatak se može riješiti doslovno neovisno o implementaciji tako da idem
po nizu i ako je iza nekog znaka nalazi dva puta za redom null null taj je list
ali nisam siguran da je to dobro jer ne koristim implementaciju , iako ne kršim
niti jedno pravilo zadatak je uistinu tako neovisan o implementaciji ..........

Razmišljao sam i o tome da rekonstruiram stablo iz priordera tako da ga
pospremim u niz po pravilu kako smo učili da je lijevo dijete na 2i+1 a desno
na 2i+2 ali mi sečini to preteško tj ......piše u skripti da funkcije create
, left i right subtree nisu namjenjene za implementaciju pomoću pola pa me
zanima da li mi možet netko dati kakvu ideju ili me uputiti na pravi put




ovako radi al neznam da li bi to bilo dobro:



[code:1]#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define VELICINA 1000
#define LAMBDA -1
#define NE_DEF -2
#define ne_def 'n'

typedef int node;

typedef char labeltype;



typedef struct {
node zadnji;
labeltype oznaka[VELICINA];
}BTREE;



void MAKE_NULL(BTREE *T){
int i;
for(i=0; i<VELICINA; ++i) T->oznaka[i]='+';
T->zadnji=-1;
}


int EMPTY(BTREE t){
if (t.zadnji==-1) return 1;
return 0;
}


void INSERT_LEFT_CHILD(labeltype l,node i,BTREE *t)
{
if(i>t->zadnji || i<0 || t->oznaka[2*i+1]==l){
//printf("\n NEDEFINIRANO !!!!!!!!!!\n");
return;}
else
t->oznaka[2*i+1]=l;
}

void INSERT_RIGHT_CHILD(labeltype l,node i,BTREE *t)
{
if(i>t->zadnji || i<0 || t->oznaka[2*i+2]==l){
//printf("\n NEDEFINIRANO !!!!!!!!!!\n");
return;}
else
t->oznaka[2*i+2]=l;
}

node LEFT_CHILD(node i, BTREE t)
{
if(t.oznaka[2*i+1]=='+')
return LAMBDA;
if(i>t.zadnji || i<0 || 2*i+1>t.zadnji){
//printf("\n NEDEFINIRANO !!!!!!!!!!\n");
return NE_DEF;}

return 2*i+1;
}

node RIGHT_CHILD(node i, BTREE t)
{
if(t.oznaka[2*i+2]=='+')
return LAMBDA;
if(2*i+2>t.zadnji||i>t.zadnji || i<0){
//printf("\n NEDEFINIRANO !!!!!!!!!!\n");
return NE_DEF;}

return 2*i+2;
}

void DELETE(node i , BTREE *t)
{
if(i>t->zadnji || i<0 || LEFT_CHILD(i,*t)!=LAMBDA ||
RIGHT_CHILD(i,*t)!=LAMBDA){
//printf("\n NEDEFINIRANO !!!!!!!!!!\n");
return;}
else
t->oznaka[i]='+';
}

node ROOT(BTREE t)
{
if(t.oznaka[0]=='+') return LAMBDA;
return 0;
}


node PARENT(node i,BTREE t)
{
if(i==ROOT(t))
return LAMBDA;

if(i>t.zadnji || i<0){
//printf("\NEDEFINIRANO!!!!!!\n");
return NE_DEF;}

return (i-1)/2;
}

labeltype LABEL(node i, BTREE t)
{
if(i<0 || i>t.zadnji){
//printf("\NEDEFINIRANO!!!!!!\n");
return ne_def;}

return t.oznaka[i];
}

void CHANGE_LABEL(labeltype l,node i,BTREE *t)
{
if(i<0 || i>t->zadnji){
//printf("\NEDEFINIRANO!!!!!!\n");
return;}

t->oznaka[i]=l;
}


void broj_i_oznake_listova_stabla(BTREE t)
{
node i;
labeltype pom[VELICINA];
int brojac=0;
for (i=0;i<=t.zadnji-2;i++)
{
if(t.oznaka[i]==' '||t.oznaka[i-1]!=' ')continue;
if(t.oznaka[i+2]=='N' && t.oznaka[i+3]=='U'&&t.oznaka[i+4]=='L' &&
t.oznaka[i+5]=='L'&&t.oznaka[i+7]=='N' &&
t.oznaka[i+8]=='U'&&t.oznaka[i+9]=='L'&&t.oznaka[i+10]=='L')
pom[brojac++]=t.oznaka[i];
}
printf("\n%d :",brojac);
for(i=0;i<brojac;i++)
printf(" %c",pom[i]);
}


int main()
{
BTREE T;

gets(T.oznaka);

T.zadnji=strlen(T.oznaka);

broj_i_oznake_listova_stabla(T);

system("PAUSE");

return 0;[tex][/tex][/code:1]
Imam problem sa zadaćom iz strukture podataka zadatak glasi ovako :

Implementirajte a.t.p. BTREE pomoću polja i napišite potprogram koji računa
broj listova u binarnom stablu. Ispišite i oznake samih listova.


Ulazni podaci: niz stringova koji opisuje binarno stablo zadano u PREORDER
obilasku proširenom oznakama praznih čvorova (NULL)
Izlazni podaci: broj listova učitanog stabla, pa oznake listova
Na primjer, za ulazne podatke:
A B F NULL J NULL NULL NULL C D NULL E G NULL NULL H NULL NULL NULL
treba ispisati:
3: J G H
Stablo iz primjera izgleda ovako:


ovaj zadatak se može riješiti doslovno neovisno o implementaciji tako da idem
po nizu i ako je iza nekog znaka nalazi dva puta za redom null null taj je list
ali nisam siguran da je to dobro jer ne koristim implementaciju , iako ne kršim
niti jedno pravilo zadatak je uistinu tako neovisan o implementaciji ..........

Razmišljao sam i o tome da rekonstruiram stablo iz priordera tako da ga
pospremim u niz po pravilu kako smo učili da je lijevo dijete na 2i+1 a desno
na 2i+2 ali mi sečini to preteško tj ......piše u skripti da funkcije create
, left i right subtree nisu namjenjene za implementaciju pomoću pola pa me
zanima da li mi možet netko dati kakvu ideju ili me uputiti na pravi put




ovako radi al neznam da li bi to bilo dobro:



Kod:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define VELICINA 1000
#define LAMBDA -1
#define NE_DEF -2
#define ne_def 'n'

typedef int node;

typedef char labeltype;



typedef struct {
        node zadnji;
        labeltype oznaka[VELICINA];
        }BTREE;



void MAKE_NULL(BTREE *T){
    int i;
    for(i=0; i<VELICINA; ++i) T->oznaka[i]='+';
    T->zadnji=-1;
    }


int EMPTY(BTREE t){
    if (t.zadnji==-1) return 1;
    return 0;
    }


void INSERT_LEFT_CHILD(labeltype l,node i,BTREE *t)
{
     if(i>t->zadnji || i<0 || t->oznaka[2*i+1]==l){
     //printf("\n NEDEFINIRANO !!!!!!!!!!\n");
     return;}
     else
     t->oznaka[2*i+1]=l;
}

void INSERT_RIGHT_CHILD(labeltype l,node i,BTREE *t)
{
     if(i>t->zadnji || i<0 || t->oznaka[2*i+2]==l){
     //printf("\n NEDEFINIRANO !!!!!!!!!!\n");
     return;}
     else
     t->oznaka[2*i+2]=l;
}

node LEFT_CHILD(node i, BTREE t)
{
     if(t.oznaka[2*i+1]=='+')
     return LAMBDA;
     if(i>t.zadnji || i<0 || 2*i+1>t.zadnji){
     //printf("\n NEDEFINIRANO !!!!!!!!!!\n");
     return NE_DEF;}

     return 2*i+1;
}

node RIGHT_CHILD(node i, BTREE t)
{
     if(t.oznaka[2*i+2]=='+')
     return LAMBDA;
     if(2*i+2>t.zadnji||i>t.zadnji || i<0){
     //printf("\n NEDEFINIRANO !!!!!!!!!!\n");
     return NE_DEF;}

     return 2*i+2;
}

void DELETE(node i , BTREE *t)
{
     if(i>t->zadnji || i<0 || LEFT_CHILD(i,*t)!=LAMBDA ||
RIGHT_CHILD(i,*t)!=LAMBDA){
     //printf("\n NEDEFINIRANO !!!!!!!!!!\n");
     return;}
     else
     t->oznaka[i]='+';
}

node ROOT(BTREE t)
{
    if(t.oznaka[0]=='+') return LAMBDA;
    return 0;
}


node PARENT(node i,BTREE t)
{
     if(i==ROOT(t))
     return LAMBDA;

     if(i>t.zadnji || i<0){
     //printf("\NEDEFINIRANO!!!!!!\n");
     return NE_DEF;}

     return (i-1)/2;
}

labeltype LABEL(node i, BTREE t)
{
          if(i<0 || i>t.zadnji){
          //printf("\NEDEFINIRANO!!!!!!\n");
          return ne_def;}

          return t.oznaka[i];
}

void CHANGE_LABEL(labeltype l,node i,BTREE *t)
{
     if(i<0 || i>t->zadnji){
          //printf("\NEDEFINIRANO!!!!!!\n");
          return;}

     t->oznaka[i]=l;
}


void broj_i_oznake_listova_stabla(BTREE t)
{
     node i;
     labeltype pom[VELICINA];
     int brojac=0;
     for (i=0;i<=t.zadnji-2;i++)
     {
       if(t.oznaka[i]==' '||t.oznaka[i-1]!=' ')continue;
       if(t.oznaka[i+2]=='N'  && t.oznaka[i+3]=='U'&&t.oznaka[i+4]=='L' &&
t.oznaka[i+5]=='L'&&t.oznaka[i+7]=='N'  &&
t.oznaka[i+8]=='U'&&t.oznaka[i+9]=='L'&&t.oznaka[i+10]=='L')
       pom[brojac++]=t.oznaka[i];
      }
      printf("\n%d :",brojac);
      for(i=0;i<brojac;i++)
      printf(" %c",pom[i]);
}


int main()
{
    BTREE T;

    gets(T.oznaka);

    T.zadnji=strlen(T.oznaka);

    broj_i_oznake_listova_stabla(T);

    system("PAUSE");

    return 0;[tex][/tex]


[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: 21:55 sri, 10. 11. 2010    Naslov: Citirajte i odgovorite

[quote="ankovacic"]Može li mi netko pomoć pri implementaciji f-je position MAKE_NULL (LIST *L)...
Lista je implementirana preko kursora (tako mi je zadano u zadaći i sada ne znam kako bi izbrisao sve elemente)[/quote]
MAKE_NULL nije zamišljena za brisanje elemenate liste (za to služi višestruka primjena DELETE-a), već za pretvaranje liste u praznu listu.
Primjeti da nikako ne možeš odrediti iz &L (to se šalje u MAKE_NULL) je li lista L prethodno korištena, ili je tek deklarirana (osim ako se u njoj nalazi neka suluda vrijednost).
Znači, sve što trebaš napraviti je header (njega otmeš iz liste available), postaviti njegov next na -1 i vratiti poziciju tog headera.
ankovacic (napisa):
Može li mi netko pomoć pri implementaciji f-je position MAKE_NULL (LIST *L)...
Lista je implementirana preko kursora (tako mi je zadano u zadaći i sada ne znam kako bi izbrisao sve elemente)

MAKE_NULL nije zamišljena za brisanje elemenate liste (za to služi višestruka primjena DELETE-a), već za pretvaranje liste u praznu listu.
Primjeti da nikako ne možeš odrediti iz &L (to se šalje u MAKE_NULL) je li lista L prethodno korištena, ili je tek deklarirana (osim ako se u njoj nalazi neka suluda vrijednost).
Znači, sve što trebaš napraviti je header (njega otmeš iz liste available), postaviti njegov next na -1 i vratiti poziciju tog headera.


[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: 21:59 sri, 10. 11. 2010    Naslov: Citirajte i odgovorite

[quote="pmli"]Evo, nadam se razumljiviji, pseudokod:
[code:1]dok se ima nešto za učitati
učitaj
ako je učitan operator
stavi ga na stog
inače
dok je stog [b]neprazan[/b] i na vrhu je operand ili '!'
ako je na vrhu operand
izvuci taj operand i operator ispod njega
primjeni izvučeni operator na izvučeni i učitani operand, te dobivenu vrijednost spremi na mjesto učitanog operanda
inače
izvuci '!'
primjeni '!' na učitani operand i dobivenu vrijedost spremi na mjesto učitanog operanda
stavi učitani operand na stog[/code:1]
[/quote]

ovako sam napravila i prije nego sam pročitala tvoj post(jeeeej),osim ovog kvaziboldanog u petlji while,i provela sam 2 sata doslovno buljeći u kod i gledajući što mi nije točno,program se rušio,tako da ti neizmjerno hvala što to više nemoram radit! :D
i program sada radi i to točno :)
pmli (napisa):
Evo, nadam se razumljiviji, pseudokod:
Kod:
dok se ima nešto za učitati
    učitaj
    ako je učitan operator
        stavi ga na stog
    inače
        dok je stog [b]neprazan[/b] i na vrhu je operand ili '!'
            ako je na vrhu operand
                izvuci taj operand i operator ispod njega
                primjeni izvučeni operator na izvučeni i učitani operand, te dobivenu vrijednost spremi na mjesto učitanog operanda
            inače
                izvuci '!'
                primjeni '!' na učitani operand i dobivenu vrijedost spremi na mjesto učitanog operanda
        stavi učitani operand na stog



ovako sam napravila i prije nego sam pročitala tvoj post(jeeeej),osim ovog kvaziboldanog u petlji while,i provela sam 2 sata doslovno buljeći u kod i gledajući što mi nije točno,program se rušio,tako da ti neizmjerno hvala što to više nemoram radit! Very Happy
i program sada radi i to točno Smile


[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  Sljedeće
Stranica 2 / 3.

 
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