Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
tomitza Forumaš(ica)
Pridružen/a: 28. 11. 2008. (19:50:48) Postovi: (58)16
|
Postano: 11:30 sub, 16. 1. 2010 Naslov: DZ - pomoc |
|
|
dakle, zadatak je implementirati PRIORITY_QUEUE preko binarnog stabla trazenja koje je implementirano preko pointera. U prioritetnom redu čuvamo stringove od max. 20 znakova, dakle, label nekog cvora stabla je tipa String=char[21].
Problem je f-ji DELETE_MIN. Funkcija DELETE_MIN brise najmanjeg clana iz PRIORITY_QUEUE-a i vraca njegovu vrijednost. Moja f-ja pronalazi najmanjeg clana, ali kod brisanja, program se smrzne i vraca gresku. Ovo je dio koda za tu funkciju, ja gresku ne vidim jer mi se cini da je sve dobro napisano. Pa ako itko vidi gresku neka pomogne. Hvala...
[code:1]
char* DELETE_MIN (PRIORITY_QUEUE *A) {
BTREE *temp;
char *min;
if ((*A)->leftchild == NULL ) {
strcpy(min,(*A)->label);
temp = A;
*A = (*A)->rightchild;
free(temp);
}
else
min=DELETE_MIN(&((*A)->leftchild));
return min;
}
/* poziv f-je */
char *x;
...........
x = DELETE_MIN(&B);
[/code:1]
edit: problem rijesen
dakle, zadatak je implementirati PRIORITY_QUEUE preko binarnog stabla trazenja koje je implementirano preko pointera. U prioritetnom redu čuvamo stringove od max. 20 znakova, dakle, label nekog cvora stabla je tipa String=char[21].
Problem je f-ji DELETE_MIN. Funkcija DELETE_MIN brise najmanjeg clana iz PRIORITY_QUEUE-a i vraca njegovu vrijednost. Moja f-ja pronalazi najmanjeg clana, ali kod brisanja, program se smrzne i vraca gresku. Ovo je dio koda za tu funkciju, ja gresku ne vidim jer mi se cini da je sve dobro napisano. Pa ako itko vidi gresku neka pomogne. Hvala...
Kod: |
char* DELETE_MIN (PRIORITY_QUEUE *A) {
BTREE *temp;
char *min;
if ((*A)->leftchild == NULL ) {
strcpy(min,(*A)->label);
temp = A;
*A = (*A)->rightchild;
free(temp);
}
else
min=DELETE_MIN(&((*A)->leftchild));
return min;
}
/* poziv f-je */
char *x;
...........
x = DELETE_MIN(&B);
|
edit: problem rijesen
Zadnja promjena: tomitza; 18:46 sub, 16. 1. 2010; ukupno mijenjano 1 put.
|
|
[Vrh] |
|
Lafiel Forumaš(ica)
Pridružen/a: 26. 09. 2007. (09:56:59) Postovi: (153)16
Spol:
|
|
[Vrh] |
|
Milojko Forumaš(ica)
Pridružen/a: 07. 11. 2008. (14:57:52) Postovi: (453)16
Spol:
Lokacija: Hilbertov hotel
|
Postano: 17:39 sub, 16. 1. 2010 Naslov: |
|
|
[quote="Lafiel"]Vjerojatno bih trebala znati ovo, ali ne znam. :P I ispričavam se autoru topica na uzurpiranju, ali i ovo moje ima veze sa zadaćom. :P Gdje u DevCPPu mogu naći neki crash log ili nešto takvoga? Program mi se naime kompajlira bez greške, ali mi se sruši kad ga pokrenem. Pretpostavljam da negdje imam nepokrpanu rupu, ali malo mi je teže kopati liniju po liniju. :/[/quote]
jednom mi je jedan od asistenata rekao da je [url=http://www.codeblocks.org/]CodeBlocks[/url] dobra stvarčica za to. skino sam ga. (imao sam sličnih problema, kompajlira se, al negdje nešto ne valja, pa uđe u beskonačnu petlju, pa ovo pa ono) ponovo sam otvorio program i malo prekopao po funkcijama koje su zezale, i našao greške.
u biti, nisam imao koristi od CodeBlocks-a, al vele da je bajo što se toga tiče :D
Lafiel (napisa): | Vjerojatno bih trebala znati ovo, ali ne znam. I ispričavam se autoru topica na uzurpiranju, ali i ovo moje ima veze sa zadaćom. Gdje u DevCPPu mogu naći neki crash log ili nešto takvoga? Program mi se naime kompajlira bez greške, ali mi se sruši kad ga pokrenem. Pretpostavljam da negdje imam nepokrpanu rupu, ali malo mi je teže kopati liniju po liniju. |
jednom mi je jedan od asistenata rekao da je CodeBlocks dobra stvarčica za to. skino sam ga. (imao sam sličnih problema, kompajlira se, al negdje nešto ne valja, pa uđe u beskonačnu petlju, pa ovo pa ono) ponovo sam otvorio program i malo prekopao po funkcijama koje su zezale, i našao greške.
u biti, nisam imao koristi od CodeBlocks-a, al vele da je bajo što se toga tiče
_________________ Sedam je prost broj
Bolonja je smeće i to pod hitno treba mijenjat
|
|
[Vrh] |
|
malena Forumaš(ica)
Pridružen/a: 27. 03. 2009. (16:43:42) Postovi: (62)16
Spol:
Lokacija: ...
|
Postano: 23:53 pon, 18. 1. 2010 Naslov: |
|
|
pozdrav svima!
znam da bi ovo tribala znati ali eto, ne znan :oops:
ako imam ovako def skup i ovo je funkcija za izracunati duljinu:
[code:1]typedef char SET[55];
typedef int position;
int DULJINA(SET S){
int i=0;
while(S[i]!=' ' && S[i]!='\n') i++;
return i;
}[/code:1]
[code:1]void DIFFERENCE(SET A, SET B, SET C){
MAKE_NULL(C);
int m=DULJINA(A);
int n=DULJINA(B);
SORT(A);
SORT(B);
position pA, pB;
pA=FIRST(A);
pB=FIRST(B);
while(pA!=m && pB!=n){
elementtype xA, xB;
xA=RETRIEVE(pA, A);
xB=RETRIEVE(pB, B);
if(xA==xB){
pA=NEXT(pA, A);
pB=NEXT(pB, B);
}
else if(xA<xB){
INSERT(xA, C);
pA=NEXT(pA, A);
}
}
while(pA!=m){
elementtype xA=RETRIEVE(pA, A);
INSERT(xA, C);
pA=NEXT(pA, A);
}
ISPIS(C);
}
[/code:1] :oops:
zasto onda ova gore funkcija ne radi? kako bi triba izgledati ispis?
help please :cry:
[size=9][color=#999999]Added after 1 minutes:[/color][/size]
ovaj sort je klasicni ono if (S[i]>S[j]) .....
pozdrav svima!
znam da bi ovo tribala znati ali eto, ne znan
ako imam ovako def skup i ovo je funkcija za izracunati duljinu:
Kod: | typedef char SET[55];
typedef int position;
int DULJINA(SET S){
int i=0;
while(S[i]!=' ' && S[i]!='\n') i++;
return i;
} |
Kod: | void DIFFERENCE(SET A, SET B, SET C){
MAKE_NULL(C);
int m=DULJINA(A);
int n=DULJINA(B);
SORT(A);
SORT(B);
position pA, pB;
pA=FIRST(A);
pB=FIRST(B);
while(pA!=m && pB!=n){
elementtype xA, xB;
xA=RETRIEVE(pA, A);
xB=RETRIEVE(pB, B);
if(xA==xB){
pA=NEXT(pA, A);
pB=NEXT(pB, B);
}
else if(xA<xB){
INSERT(xA, C);
pA=NEXT(pA, A);
}
}
while(pA!=m){
elementtype xA=RETRIEVE(pA, A);
INSERT(xA, C);
pA=NEXT(pA, A);
}
ISPIS(C);
}
|
zasto onda ova gore funkcija ne radi? kako bi triba izgledati ispis?
help please
Added after 1 minutes:
ovaj sort je klasicni ono if (S[i]>S[j]) .....
_________________
|
|
[Vrh] |
|
|