Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
Sekanta Forumaš(ica)
Pridružen/a: 13. 09. 2009. (10:14:33) Postovi: (48)16
|
Postano: 18:28 pet, 28. 10. 2011 Naslov: 1.zadaca-pomoc oko zadatka |
|
|
Moze pomoc oko ovog zadatka iz zadace iz spa. Glasi ovako:
[quote]
Implementirajte a.t.p. STACK pomoću pointera i napišite potprogram koji logički izraz iz infix oblika prebacuje u prefix oblik. Problem trebate riješiti pomoću stoga.
Ulazni podaci: string koji predstavlja logički izraz u infix obliku
Izlazni podaci: prikaz istog izraza u prefix obliku
Na primjer, za ulazne podatke:
A|B&(C^E|D)
treba ispisati:
|A&B|^CED
Napomena: &=AND, |=OR, ^=XOR, -=NOT; obratite pažnju na prioritete [/quote]
Koje ja sad sve logicke operatore moram uzeti u obzir? Ako bi mi ih netko mogao sve nabrojat, i poredat po prioritetima bila bih jako zahvalna :)
Moze pomoc oko ovog zadatka iz zadace iz spa. Glasi ovako:
Citat: |
Implementirajte a.t.p. STACK pomoću pointera i napišite potprogram koji logički izraz iz infix oblika prebacuje u prefix oblik. Problem trebate riješiti pomoću stoga.
Ulazni podaci: string koji predstavlja logički izraz u infix obliku
Izlazni podaci: prikaz istog izraza u prefix obliku
Na primjer, za ulazne podatke:
A|B&(C^E|D)
treba ispisati:
|A&B|^CED
Napomena: &=AND, |=OR, ^=XOR, -=NOT; obratite pažnju na prioritete |
Koje ja sad sve logicke operatore moram uzeti u obzir? Ako bi mi ih netko mogao sve nabrojat, i poredat po prioritetima bila bih jako zahvalna
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 4:27 sub, 29. 10. 2011 Naslov: |
|
|
Ja bih rekao da trebas implementirati ove pobrojane, a prioriteti (od najjaceg prema najslabijem su): NOT, AND, XOR, OR.
Inace, ne bi trebalo biti tesko definirati stvar na nacin da lako dodas jos operatora, ako zatreba (npr. definiras konstantni niz u kojem drzis operatore redom prioriteta i onda samo, ako treba, dodajes nove).
Ja bih rekao da trebas implementirati ove pobrojane, a prioriteti (od najjaceg prema najslabijem su): NOT, AND, XOR, OR.
Inace, ne bi trebalo biti tesko definirati stvar na nacin da lako dodas jos operatora, ako zatreba (npr. definiras konstantni niz u kojem drzis operatore redom prioriteta i onda samo, ako treba, dodajes nove).
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
|
|
[Vrh] |
|
Sekanta Forumaš(ica)
Pridružen/a: 13. 09. 2009. (10:14:33) Postovi: (48)16
|
|
[Vrh] |
|
michelangelo Forumaš(ica)
Pridružen/a: 25. 06. 2009. (22:59:23) Postovi: (69)16
Spol:
|
Postano: 0:47 ned, 30. 10. 2011 Naslov: |
|
|
da ne otvaram novu temu:
imam problem kod implementacije BTREE pomoću polja, točnije kod funkcije node CREATE(labeltype l, BTREE TL, BTREE TR, BTREE *T) ne dolazim na ideju za to. pa ako neko može dat hint barem, bila bi zahvalna :)
da ne otvaram novu temu:
imam problem kod implementacije BTREE pomoću polja, točnije kod funkcije node CREATE(labeltype l, BTREE TL, BTREE TR, BTREE *T) ne dolazim na ideju za to. pa ako neko može dat hint barem, bila bi zahvalna
|
|
[Vrh] |
|
matmih Forumaš(ica)
Pridružen/a: 07. 12. 2006. (22:57:42) Postovi: (1A4)16
Spol:
Lokacija: {Zg, De , Ri}
|
Postano: 12:04 ned, 30. 10. 2011 Naslov: |
|
|
[quote="michelangelo"]da ne otvaram novu temu:
imam problem kod implementacije BTREE pomoću polja, točnije kod funkcije node CREATE(labeltype l, BTREE TL, BTREE TR, BTREE *T) ne dolazim na ideju za to. pa ako neko može dat hint barem, bila bi zahvalna :)[/quote]
Dakle, stvorite novu strukturu BTREE i u polje SPACE na odgovarajuću poziciju (0) stavite čvor s labeltype-om l, koi je korijen stabla. Ako su zadana stabla TR i TL, korijeni ta dva stabla su djeca od korijena stabla T (kopirate ih na odgovarajuću poziciju u polju SPACE, ovisno o tome kako ste reprezentirali djecu određenog čvora), ostale čvorove na jednaki način kopirate u polje SPACE stabla T.
Svakako kod implementacije morate znati koje je lijevo a koje desno dijete određenog čvora.
michelangelo (napisa): | da ne otvaram novu temu:
imam problem kod implementacije BTREE pomoću polja, točnije kod funkcije node CREATE(labeltype l, BTREE TL, BTREE TR, BTREE *T) ne dolazim na ideju za to. pa ako neko može dat hint barem, bila bi zahvalna |
Dakle, stvorite novu strukturu BTREE i u polje SPACE na odgovarajuću poziciju (0) stavite čvor s labeltype-om l, koi je korijen stabla. Ako su zadana stabla TR i TL, korijeni ta dva stabla su djeca od korijena stabla T (kopirate ih na odgovarajuću poziciju u polju SPACE, ovisno o tome kako ste reprezentirali djecu određenog čvora), ostale čvorove na jednaki način kopirate u polje SPACE stabla T.
Svakako kod implementacije morate znati koje je lijevo a koje desno dijete određenog čvora.
|
|
[Vrh] |
|
michelangelo Forumaš(ica)
Pridružen/a: 25. 06. 2009. (22:59:23) Postovi: (69)16
Spol:
|
Postano: 13:54 ned, 30. 10. 2011 Naslov: |
|
|
tnx. mislim da sam skopčala. još jedno pitanje zadatak mi je stvorit novo stablo koje se sastoji samo od korijenskog čvora, koji mora dobiti oznaku c. dal je ovaj kod dobar za to?
void make_new(BTREE *B, labeltype c)
{
BTREE Br,Bl;
MAKE_NULL(&Br);
MAKE_NULL(&Bl);
node i=CREATE(c,Br,Bl,&B);
}
tnx. mislim da sam skopčala. još jedno pitanje zadatak mi je stvorit novo stablo koje se sastoji samo od korijenskog čvora, koji mora dobiti oznaku c. dal je ovaj kod dobar za to?
void make_new(BTREE *B, labeltype c)
{
BTREE Br,Bl;
MAKE_NULL(&Br);
MAKE_NULL(&Bl);
node i=CREATE(c,Br,Bl,&B);
}
|
|
[Vrh] |
|
matmih Forumaš(ica)
Pridružen/a: 07. 12. 2006. (22:57:42) Postovi: (1A4)16
Spol:
Lokacija: {Zg, De , Ri}
|
Postano: 15:22 ned, 30. 10. 2011 Naslov: |
|
|
[quote="michelangelo"]tnx. mislim da sam skopčala. još jedno pitanje zadatak mi je stvorit novo stablo koje se sastoji samo od korijenskog čvora, koji mora dobiti oznaku c. dal je ovaj kod dobar za to?
void make_new(BTREE *B, labeltype c)
{
BTREE Br,Bl;
MAKE_NULL(&Br);
MAKE_NULL(&Bl);
node i=CREATE(c,Br,Bl,&B);
}[/quote]
Ovo bi trebalo raditi.
Predlažem da testirate svaku funkciju posebno dok implementirate stablo.
Inače će vam se nakupiti više grešaka pa nećete znati gdje je što krivo.
michelangelo (napisa): | tnx. mislim da sam skopčala. još jedno pitanje zadatak mi je stvorit novo stablo koje se sastoji samo od korijenskog čvora, koji mora dobiti oznaku c. dal je ovaj kod dobar za to?
void make_new(BTREE *B, labeltype c)
{
BTREE Br,Bl;
MAKE_NULL(&Br);
MAKE_NULL(&Bl);
node i=CREATE(c,Br,Bl,&B);
} |
Ovo bi trebalo raditi.
Predlažem da testirate svaku funkciju posebno dok implementirate stablo.
Inače će vam se nakupiti više grešaka pa nećete znati gdje je što krivo.
|
|
[Vrh] |
|
integral Forumaš(ica)
Pridružen/a: 09. 05. 2011. (14:48:05) Postovi: (1D)16
|
|
[Vrh] |
|
CROmpir Forumaš(ica)
Pridružen/a: 15. 09. 2009. (18:27:06) Postovi: (B3)16
|
|
[Vrh] |
|
integral Forumaš(ica)
Pridružen/a: 09. 05. 2011. (14:48:05) Postovi: (1D)16
|
|
[Vrh] |
|
michelangelo Forumaš(ica)
Pridružen/a: 25. 06. 2009. (22:59:23) Postovi: (69)16
Spol:
|
|
[Vrh] |
|
CROmpir Forumaš(ica)
Pridružen/a: 15. 09. 2009. (18:27:06) Postovi: (B3)16
|
|
[Vrh] |
|
matmih Forumaš(ica)
Pridružen/a: 07. 12. 2006. (22:57:42) Postovi: (1A4)16
Spol:
Lokacija: {Zg, De , Ri}
|
Postano: 1:42 pon, 31. 10. 2011 Naslov: |
|
|
[quote="CROmpir"]Imam jedno pitanje,
Kako u atp. BTREE, definirati LAMBDA?? :P
i kako implementirati PARENT funkciju...
hvala[/quote]
Definicija LAMBDE ovisi o tome što su vam čvorovi.
Ako recimo u stablu imate cijelobrojne oznake (prirodne brojeve), onda možete definirati da vam je LAMBDA -1 recimo.
Implementacija PARENT funkcije također ovisi o tome na koji način morate implementirati BTREE (polje, pointeri...), uglavnom imat ćete ili pointer na roditelja ili kursor na roditelja. Funkcija parent onda samo pročita taj podatak.
CROmpir (napisa): | Imam jedno pitanje,
Kako u atp. BTREE, definirati LAMBDA??
i kako implementirati PARENT funkciju...
hvala |
Definicija LAMBDE ovisi o tome što su vam čvorovi.
Ako recimo u stablu imate cijelobrojne oznake (prirodne brojeve), onda možete definirati da vam je LAMBDA -1 recimo.
Implementacija PARENT funkcije također ovisi o tome na koji način morate implementirati BTREE (polje, pointeri...), uglavnom imat ćete ili pointer na roditelja ili kursor na roditelja. Funkcija parent onda samo pročita taj podatak.
|
|
[Vrh] |
|
CROmpir Forumaš(ica)
Pridružen/a: 15. 09. 2009. (18:27:06) Postovi: (B3)16
|
|
[Vrh] |
|
pravipurger Forumaš(ica)
Pridružen/a: 11. 07. 2009. (10:29:44) Postovi: (128)16
Spol:
|
Postano: 12:16 pon, 31. 10. 2011 Naslov: |
|
|
1. Kada implementiram LIST preko pointera u zadaći da li trebam napisati funkciju PREVIOUS() za koju skripta kaže da je neefikasna, ali dz kaže "potrebno napraviti sve funkcije koje su navedene kod definicije tog atp-a"?
2. Da li kad mi ćelija sadrži koeficijent, eksponent i pointer trebam pisati dvije funckije RETRIEVE1 i RETRIEVE2, jednu koja vraća koef, drugu koja vraća exp ili jednu koja će vraćati nešto drugo?
1. Kada implementiram LIST preko pointera u zadaći da li trebam napisati funkciju PREVIOUS() za koju skripta kaže da je neefikasna, ali dz kaže "potrebno napraviti sve funkcije koje su navedene kod definicije tog atp-a"?
2. Da li kad mi ćelija sadrži koeficijent, eksponent i pointer trebam pisati dvije funckije RETRIEVE1 i RETRIEVE2, jednu koja vraća koef, drugu koja vraća exp ili jednu koja će vraćati nešto drugo?
_________________ No, you clearly don’t know who you’re talking to, so let me clue you in: I am not in danger, Skylar. I am the danger. A guy opens his door and gets shot and you think that of me? No. I am the one who knocks.
|
|
[Vrh] |
|
matmih Forumaš(ica)
Pridružen/a: 07. 12. 2006. (22:57:42) Postovi: (1A4)16
Spol:
Lokacija: {Zg, De , Ri}
|
Postano: 13:28 pon, 31. 10. 2011 Naslov: |
|
|
[quote="pravipurger"]1. Kada implementiram LIST preko pointera u zadaći da li trebam napisati funkciju PREVIOUS() za koju skripta kaže da je neefikasna, ali dz kaže "potrebno napraviti sve funkcije koje su navedene kod definicije tog atp-a"?
2. Da li kad mi ćelija sadrži koeficijent, eksponent i pointer trebam pisati dvije funckije RETRIEVE1 i RETRIEVE2, jednu koja vraća koef, drugu koja vraća exp ili jednu koja će vraćati nešto drugo?[/quote]
1. Ako u zadaći kaže napisati sve funkcije, onda morate napisati sve funkcije. :)
2. U ATP postoji samo jedna funkcija RETRIEVE i samo tu morate implementirati, ona vraća element koji se nalazi na poziciji p u listi. Dakle vraća element, kojeg god tipa on bio u vašem zadatku.
pravipurger (napisa): | 1. Kada implementiram LIST preko pointera u zadaći da li trebam napisati funkciju PREVIOUS() za koju skripta kaže da je neefikasna, ali dz kaže "potrebno napraviti sve funkcije koje su navedene kod definicije tog atp-a"?
2. Da li kad mi ćelija sadrži koeficijent, eksponent i pointer trebam pisati dvije funckije RETRIEVE1 i RETRIEVE2, jednu koja vraća koef, drugu koja vraća exp ili jednu koja će vraćati nešto drugo? |
1. Ako u zadaći kaže napisati sve funkcije, onda morate napisati sve funkcije.
2. U ATP postoji samo jedna funkcija RETRIEVE i samo tu morate implementirati, ona vraća element koji se nalazi na poziciji p u listi. Dakle vraća element, kojeg god tipa on bio u vašem zadatku.
|
|
[Vrh] |
|
CROmpir Forumaš(ica)
Pridružen/a: 15. 09. 2009. (18:27:06) Postovi: (B3)16
|
|
[Vrh] |
|
matmih Forumaš(ica)
Pridružen/a: 07. 12. 2006. (22:57:42) Postovi: (1A4)16
Spol:
Lokacija: {Zg, De , Ri}
|
|
[Vrh] |
|
CROmpir Forumaš(ica)
Pridružen/a: 15. 09. 2009. (18:27:06) Postovi: (B3)16
|
Postano: 23:35 pon, 31. 10. 2011 Naslov: |
|
|
Moze li mi netko pomoci oko nacina unosa BINARNOG STABLA...
Bio bih mu jako zahvalan posto me to jako muci...
I imam pitanje u vezi implementacije, jel ovo u redu??
[code:1]node CREATE(labeltype l, BTREE TL, BTREE TR, BTREE *Tptr){
*Tptr=(celltype *)malloc(sizeof(celltype));
(*Tptr)->label=l;
(*Tptr)->leftchild=TL;
(*Tptr)->rightchild=TR;
return (*Tptr);
}
node INSERT_LEFT_CHILD ( labeltype l, node i, BTREE *T){
node novi;
novi=CREATE(l,LAMBDA,LAMBDA,T);
i->leftchild=novi;
return (i->leftchild);
}
node INSERT_RIGHT_CHILD ( labeltype l, node i, BTREE *T){
node novi;
novi=CREATE(l,LAMBDA,LAMBDA,T);
i->rightchild=novi;
return (i->rightchild);
}[/code:1]
Moze li mi netko pomoci oko nacina unosa BINARNOG STABLA...
Bio bih mu jako zahvalan posto me to jako muci...
I imam pitanje u vezi implementacije, jel ovo u redu??
Kod: | node CREATE(labeltype l, BTREE TL, BTREE TR, BTREE *Tptr){
*Tptr=(celltype *)malloc(sizeof(celltype));
(*Tptr)->label=l;
(*Tptr)->leftchild=TL;
(*Tptr)->rightchild=TR;
return (*Tptr);
}
node INSERT_LEFT_CHILD ( labeltype l, node i, BTREE *T){
node novi;
novi=CREATE(l,LAMBDA,LAMBDA,T);
i->leftchild=novi;
return (i->leftchild);
}
node INSERT_RIGHT_CHILD ( labeltype l, node i, BTREE *T){
node novi;
novi=CREATE(l,LAMBDA,LAMBDA,T);
i->rightchild=novi;
return (i->rightchild);
} |
|
|
[Vrh] |
|
matmih Forumaš(ica)
Pridružen/a: 07. 12. 2006. (22:57:42) Postovi: (1A4)16
Spol:
Lokacija: {Zg, De , Ri}
|
Postano: 18:23 uto, 1. 11. 2011 Naslov: |
|
|
[quote="CROmpir"]Moze li mi netko pomoci oko nacina unosa BINARNOG STABLA...
Bio bih mu jako zahvalan posto me to jako muci...
I imam pitanje u vezi implementacije, jel ovo u redu??
[code:1]node CREATE(labeltype l, BTREE TL, BTREE TR, BTREE *Tptr){
*Tptr=(celltype *)malloc(sizeof(celltype));
(*Tptr)->label=l;
(*Tptr)->leftchild=TL;
(*Tptr)->rightchild=TR;
return (*Tptr);
}
node INSERT_LEFT_CHILD ( labeltype l, node i, BTREE *T){
node novi;
novi=CREATE(l,LAMBDA,LAMBDA,T);
i->leftchild=novi;
return (i->leftchild);
}
node INSERT_RIGHT_CHILD ( labeltype l, node i, BTREE *T){
node novi;
novi=CREATE(l,LAMBDA,LAMBDA,T);
i->rightchild=novi;
return (i->rightchild);
}[/code:1][/quote]
Binarno stablo unosite tako da ga prvo stvorite s funkcijom CREATE, a zatim dodajete čvorove pomoću funkcija INSERT_LEFT/RIGHT_CHILD
Ove implementacije INSERT_LEFT/RIGHT_CHILD neće baš raditi što bi trebale. Vi pri svakom pozivu stvarate novo stablo T, pošto pozivate funkciju CREATE (pročitajte u službenom šalabahteru što ta funkcija radi). Ono što funkcije INSERT trebaju raditi je dodati čvor u već postojeće stablo, što znači da u stablu T, dodajete lijevo/desno dijete čvoru i.
CROmpir (napisa): | Moze li mi netko pomoci oko nacina unosa BINARNOG STABLA...
Bio bih mu jako zahvalan posto me to jako muci...
I imam pitanje u vezi implementacije, jel ovo u redu??
Kod: | node CREATE(labeltype l, BTREE TL, BTREE TR, BTREE *Tptr){
*Tptr=(celltype *)malloc(sizeof(celltype));
(*Tptr)->label=l;
(*Tptr)->leftchild=TL;
(*Tptr)->rightchild=TR;
return (*Tptr);
}
node INSERT_LEFT_CHILD ( labeltype l, node i, BTREE *T){
node novi;
novi=CREATE(l,LAMBDA,LAMBDA,T);
i->leftchild=novi;
return (i->leftchild);
}
node INSERT_RIGHT_CHILD ( labeltype l, node i, BTREE *T){
node novi;
novi=CREATE(l,LAMBDA,LAMBDA,T);
i->rightchild=novi;
return (i->rightchild);
} |
|
Binarno stablo unosite tako da ga prvo stvorite s funkcijom CREATE, a zatim dodajete čvorove pomoću funkcija INSERT_LEFT/RIGHT_CHILD
Ove implementacije INSERT_LEFT/RIGHT_CHILD neće baš raditi što bi trebale. Vi pri svakom pozivu stvarate novo stablo T, pošto pozivate funkciju CREATE (pročitajte u službenom šalabahteru što ta funkcija radi). Ono što funkcije INSERT trebaju raditi je dodati čvor u već postojeće stablo, što znači da u stablu T, dodajete lijevo/desno dijete čvoru i.
|
|
[Vrh] |
|
|