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

mapping - compute
WWW:

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
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 11:51 ned, 3. 2. 2008    Naslov: mapping - compute Citirajte i odgovorite

[code:1]#define maxlength nešto

typedef struct
{
domain domainelement;
range rangeelement;
} celltype;

typedef struct
{
celltype pairs[maxlength];
int last;
} MAPPING;

int COMPUTE( MAPPING M, domain d, range *r ) {
int l = 0, m, u = M.last;
domain dm;

while( l <= u ) {
m = ( l + u ) / 2;
dm = M.pairs[m].domainelement;
if( dm == d ) {
(*r) = M.pairs[m].rangeelement;
return 1;
}
else if( dm < d )
l = m + 1;
else
u = m - 1;
}
return 0;[/code:1]

poziv fje sa:
[code:1]MAPPING M;
domain s;
range p;
int nadjen;

nadjen = COMPUTE (M,s,&p);[/code:1]

Ovo je iz prezentacija dostupnih na službenim stranicama kolegija, radi se o implementaciji mappinga pomoću sortiranog polja.

Moje pitanje je: zašto se ovo ruši u programu a ne bi trebalo?! Uopće ne uđe u funkciju, samo se zatvori prozor!!
Kod:
#define maxlength nešto

typedef struct
{
domain domainelement;
range rangeelement;
} celltype;

typedef struct
{
celltype pairs[maxlength];
int last;
} MAPPING;

int COMPUTE( MAPPING M, domain d, range *r ) {
int l = 0, m, u = M.last;
domain dm;

while( l <= u ) {
      m = ( l + u ) / 2;
      dm = M.pairs[m].domainelement;
      if( dm == d ) {
                          (*r) = M.pairs[m].rangeelement;
                          return 1;
                          }
      else if( dm < d )
      l = m + 1;
             else
             u = m - 1;
}
return 0;


poziv fje sa:
Kod:
MAPPING M;
domain s;
range p;
int nadjen;

nadjen = COMPUTE (M,s,&p);


Ovo je iz prezentacija dostupnih na službenim stranicama kolegija, radi se o implementaciji mappinga pomoću sortiranog polja.

Moje pitanje je: zašto se ovo ruši u programu a ne bi trebalo?! Uopće ne uđe u funkciju, samo se zatvori prozor!!



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 15:29 ned, 3. 2. 2008    Naslov: Citirajte i odgovorite

Primjetih i da se program ruši samo na funkcijama koje vraćaju int, a ne na onima void, i također da se ruše na onima koje primaju M, a ne *M.
Dakle, kad samo treba nešto pročitat iz M onda se sruši.

Baš me to muči. :(
Primjetih i da se program ruši samo na funkcijama koje vraćaju int, a ne na onima void, i također da se ruše na onima koje primaju M, a ne *M.
Dakle, kad samo treba nešto pročitat iz M onda se sruši.

Baš me to muči. Sad



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 15:35 ned, 3. 2. 2008    Naslov: Citirajte i odgovorite

Ako ne pozoves [tt]MAKE_NULL()[/tt], tko zna sto ti je u [tt]M.zadnji[/tt], pa je normalno da se program srusi... :?
Ako ne pozoves MAKE_NULL(), tko zna sto ti je u M.zadnji, pa je normalno da se program srusi... Confused



_________________
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.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 15:40 ned, 3. 2. 2008    Naslov: Citirajte i odgovorite

Pozvan je MAKE_NULL(&M)... i u njoj piše:

[code:1]void MAKE_NULL (MAPPING *M)
{
(M->zadnji)=0;
}[/code:1]

A čita tek kad je nešto već unutra...u mom primjeru 2 puta ide assign i to dobro napravi...
Pozvan je MAKE_NULL(&M)... i u njoj piše:

Kod:
void MAKE_NULL (MAPPING *M)
{
    (M->zadnji)=0;
}


A čita tek kad je nešto već unutra...u mom primjeru 2 puta ide assign i to dobro napravi...



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
MKova
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 10. 2005. (18:24:38)
Postovi: (187)16
Spol: muško
Sarma = la pohva - posuda
= 45 - 45

PostPostano: 15:43 ned, 3. 2. 2008    Naslov: Citirajte i odgovorite

ja imam problem vezan uz stringove pak....

MAPPING mi se sastoji od polja stringova key[] i brojeva value[] ...
ja u make_null funkciji alociram memoriju za stringove:
[code:1]
#define LAMBDA ""

M->key[i] = (char*)malloc(21*sizeof(char));
M->key[i] = LAMBDA;[/code:1]

ali prilikom assigna, koristeći strcpy javlja error (rusi se program) ako opet ne alociram memoriju...
[code:1]
if (M->key[i] == LAMBDA) {
// M->key[i] = (char*)malloc(21*sizeof(char));
strcpy(M->key[i], d);
M->value[i] = r;
}
[/code:1]
gdje se prva alocirana memorija iz make_null zgubila u međuvremenu? :?

EDIT:
mislim da sam skuzio, kad napravim
[code:1]M->key[i] = "";[/code:1]
to zapravo mijenja pointer na taj novi mali string "", pa alocirana memorija ostaje drugdje... ovaj C fakat ima svasta za pazit
ja imam problem vezan uz stringove pak....

MAPPING mi se sastoji od polja stringova key[] i brojeva value[] ...
ja u make_null funkciji alociram memoriju za stringove:
Kod:

        #define LAMBDA ""

         M->key[i] = (char*)malloc(21*sizeof(char));
         M->key[i] = LAMBDA;


ali prilikom assigna, koristeći strcpy javlja error (rusi se program) ako opet ne alociram memoriju...
Kod:

         if (M->key[i] == LAMBDA) {
//            M->key[i] = (char*)malloc(21*sizeof(char));
            strcpy(M->key[i], d);
            M->value[i] = r;
         }

gdje se prva alocirana memorija iz make_null zgubila u međuvremenu? Confused

EDIT:
mislim da sam skuzio, kad napravim
Kod:
M->key[i] = "";

to zapravo mijenja pointer na taj novi mali string "", pa alocirana memorija ostaje drugdje... ovaj C fakat ima svasta za pazit



_________________
suradnici za razvoj igre traženi!! vidi ovo


Zadnja promjena: MKova; 15:48 ned, 3. 2. 2008; ukupno mijenjano 4 put/a.
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail MSNM
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 16:00 ned, 3. 2. 2008    Naslov: Citirajte i odgovorite

Ostala je alocirana, ali bez pointera, kad si izveo drugu lajnu iz prvog [tt][c[i][/i]ode]...[/code][/tt]-bloka. :)

[code:1] #define LAMBDA ""
M->key[i] = (char*)malloc(21*sizeof(char));
M->key[i] = LAMBDA;[/code:1]

Trebalo je (u zadnjoj lajni) ici:
[code:1]strcpy(M->key[i], LAMBDA);[/code:1]
ili, jednostavno,
[code:1]M->key[i][0] = '\0';[/code:1]

No, kad vec radis s pointerima, onda je cak i bolje ne alocirati memoriju dok ti ne treba, nego staviti:

[code:1] #define LAMBDA NULL
M->key[i] = LAMBDA;[/code:1]

Jasno, to trazi ponesto modifikacija po ostatku koda... 8)

@Luuka: ako zelis da opet pogledam prog, posalji mi aktualnu verziju na PM. :)
Ostala je alocirana, ali bez pointera, kad si izveo drugu lajnu iz prvog [code]...[/code]-bloka. Smile

Kod:
        #define LAMBDA ""
         M->key[i] = (char*)malloc(21*sizeof(char));
         M->key[i] = LAMBDA;


Trebalo je (u zadnjoj lajni) ici:
Kod:
strcpy(M->key[i], LAMBDA);

ili, jednostavno,
Kod:
M->key[i][0] = '\0';


No, kad vec radis s pointerima, onda je cak i bolje ne alocirati memoriju dok ti ne treba, nego staviti:

Kod:
        #define LAMBDA NULL
         M->key[i] = LAMBDA;


Jasno, to trazi ponesto modifikacija po ostatku koda... Cool

@Luuka: ako zelis da opet pogledam prog, posalji mi aktualnu verziju na PM. Smile



_________________
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.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
MKova
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 10. 2005. (18:24:38)
Postovi: (187)16
Spol: muško
Sarma = la pohva - posuda
= 45 - 45

PostPostano: 16:03 ned, 3. 2. 2008    Naslov: Citirajte i odgovorite

[quote="vsego"]
No, kad vec radis s pointerima, onda je cak i bolje ne alocirati memoriju dok ti ne treba, nego staviti:

[code:1] #define LAMBDA NULL
M->key[i] = LAMBDA;[/code:1]

[/quote]

tnx.

Odlicno, NULL je jos bolje rjesenje od "", jer time ne rezerviramo clan domene i ne moram pri usporedbi koristit strcmp()
vsego (napisa):

No, kad vec radis s pointerima, onda je cak i bolje ne alocirati memoriju dok ti ne treba, nego staviti:

Kod:
        #define LAMBDA NULL
         M->key[i] = LAMBDA;




tnx.

Odlicno, NULL je jos bolje rjesenje od "", jer time ne rezerviramo clan domene i ne moram pri usporedbi koristit strcmp()



_________________
suradnici za razvoj igre traženi!! vidi ovo
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail MSNM
MKova
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 10. 2005. (18:24:38)
Postovi: (187)16
Spol: muško
Sarma = la pohva - posuda
= 45 - 45

PostPostano: 16:37 ned, 3. 2. 2008    Naslov: Citirajte i odgovorite

[quote]Implementirajte a.t.p. MAPPING pomoću sortiranog polja sa N elemenata[/quote]

mene još samo zanima što je točno sortirano polje? Dal mogu imat rupe između elemenata? Tražio sam po skripti sa predavanja ali nisam našao.
I zašto mora biti sortirano za MAPPING, kad mi zapravo dovoljan samo SET?
Citat:
Implementirajte a.t.p. MAPPING pomoću sortiranog polja sa N elemenata


mene još samo zanima što je točno sortirano polje? Dal mogu imat rupe između elemenata? Tražio sam po skripti sa predavanja ali nisam našao.
I zašto mora biti sortirano za MAPPING, kad mi zapravo dovoljan samo SET?



_________________
suradnici za razvoj igre traženi!! vidi ovo
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail MSNM
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 16:39 ned, 3. 2. 2008    Naslov: Citirajte i odgovorite

Sortirano polje je polje u koje ubacuješ elemente tak da bude sortirano ;)
I nema rupa ;)

A za mapping je sortirano da se lakše nađe podatak ( binarno traženje funkcionira samo kad je sortirano) a može bit jaaaako puno elemenata....jest da je onda ubacivanje sporije (i brisanje) al traženje je puno brže ;)
Sortirano polje je polje u koje ubacuješ elemente tak da bude sortirano Wink
I nema rupa Wink

A za mapping je sortirano da se lakše nađe podatak ( binarno traženje funkcionira samo kad je sortirano) a može bit jaaaako puno elemenata....jest da je onda ubacivanje sporije (i brisanje) al traženje je puno brže Wink



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
MKova
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 10. 2005. (18:24:38)
Postovi: (187)16
Spol: muško
Sarma = la pohva - posuda
= 45 - 45

PostPostano: 17:19 ned, 3. 2. 2008    Naslov: Citirajte i odgovorite

[quote="Luuka"]
A za mapping je sortirano da se lakše nađe podatak ( binarno traženje funkcionira samo kad je sortirano) a može bit jaaaako puno elemenata....jest da je onda ubacivanje sporije (i brisanje) al traženje je puno brže ;)[/quote]

koga je za brzinu sad, glavno da radi i da je jednostavno :)
sve moje funkcije prolaze kroz cijelo polje :)

a i rupe nije tesko pokrpati premjestanjem... iako bi najradije da ne treba biti sortirano polje.
Luuka (napisa):

A za mapping je sortirano da se lakše nađe podatak ( binarno traženje funkcionira samo kad je sortirano) a može bit jaaaako puno elemenata....jest da je onda ubacivanje sporije (i brisanje) al traženje je puno brže Wink


koga je za brzinu sad, glavno da radi i da je jednostavno Smile
sve moje funkcije prolaze kroz cijelo polje Smile

a i rupe nije tesko pokrpati premjestanjem... iako bi najradije da ne treba biti sortirano polje.



_________________
suradnici za razvoj igre traženi!! vidi ovo
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail 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.
Stranica 1 / 1.

 
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