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

gdje su greške? (zadatak)
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
tidus
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 16. 02. 2009. (12:47:59)
Postovi: (A5)16
Spol: muško
Sarma = la pohva - posuda
-1 = 15 - 16

PostPostano: 0:25 sub, 31. 10. 2009    Naslov: gdje su greške? Citirajte i odgovorite

Zamolio bih ako netko može odvojiti vremena da mi napiše gdje su greške u zadatku (vjerojatno ih je više). U zadatku trebam sortirati listu uzlazno. Implementirao sam je pomoću pointera. Grešku mi javlja već kad trebam unijeti prvi element liste (cpp has encountered an error and needs to close). Ideja sortiranja:nađi najmanji element u listi i stavi ga u drugu listu na početak, pa ga izbriši iz prve liste

KOD:
[code:1]
typedef int elementtype;
typedef struct cell_tag {
elementtype element;
struct cell_tag *next;
}celltype;

typedef celltype *LIST;
typedef celltype *position;

//tu je implementacija ali je zbog zadaća nesmijem napisati

void INSERTION_SORT (LIST L1, LIST *L2) {
position p1, p2, temp;
elementtype x;
int br=0;
p1=FIRST(L1);
MAKE_NULL(L2);
p2=FIRST(*L2);
x=RETRIEVE(p1,L1);
while(EMPTY(L1)!=0) {
while(p1!=END(L1)) {
p1=NEXT(p1,L1);
if(RETRIEVE(p1,L1)<x)
x=RETRIEVE(p1,L1);
}
INSERT(x,p2,L2);
p2=NEXT(p2,*L2);
p1=FIRST(L1);
if(x==RETRIEVE(p1,L1))
{
temp=p1;
p1=NEXT(p1,L1);
DELETE(temp,&L1);
br=1;
}
while(p1!=END(L1) && br==0)
{
p1=NEXT(p1,L1);
if(x==RETRIEVE(p1,L1))
{
temp=p1;
p1=NEXT(p1,L1);
DELETE(temp,&L1);
br=1;
}
}
br=0;
p1=FIRST(L1);
}
}

int main (void)
{
celltype *L1,*L2;
position p1;
elementtype x;
char c[10];
L1=(celltype*)malloc(sizeof(celltype));
L2=(celltype*)malloc(sizeof(celltype));
int n,i;
printf("unesi broj clanova liste: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("unesi %d. element liste: ",i+1);
scanf("&d",&x);
INSERT(x,p1,&L1);
p1=NEXT(p1,L1);
}

INSERTION_SORT(L1,&L2);
p1=FIRST(L2);
printf("Sortirana lista: ");
for(i=0;i<n;i++)
{printf("%d ",RETRIEVE(p1,L2));
p1=NEXT(p1,L2);}
return 0;
}
[/code:1]
Zamolio bih ako netko može odvojiti vremena da mi napiše gdje su greške u zadatku (vjerojatno ih je više). U zadatku trebam sortirati listu uzlazno. Implementirao sam je pomoću pointera. Grešku mi javlja već kad trebam unijeti prvi element liste (cpp has encountered an error and needs to close). Ideja sortiranja:nađi najmanji element u listi i stavi ga u drugu listu na početak, pa ga izbriši iz prve liste

KOD:
Kod:

typedef int elementtype;
typedef struct cell_tag {
        elementtype element;
        struct cell_tag *next;
        }celltype;
       
typedef celltype *LIST;
typedef celltype *position;

//tu je implementacija ali je zbog zadaća nesmijem napisati

void INSERTION_SORT (LIST L1, LIST *L2) {
     position p1, p2, temp;
     elementtype x;
     int br=0;
     p1=FIRST(L1);
     MAKE_NULL(L2);
     p2=FIRST(*L2);
     x=RETRIEVE(p1,L1);
     while(EMPTY(L1)!=0) {
           while(p1!=END(L1)) {
             p1=NEXT(p1,L1);
             if(RETRIEVE(p1,L1)<x)
                x=RETRIEVE(p1,L1);
                }
           INSERT(x,p2,L2);
           p2=NEXT(p2,*L2);
           p1=FIRST(L1);
           if(x==RETRIEVE(p1,L1))
           {
              temp=p1;
              p1=NEXT(p1,L1);
              DELETE(temp,&L1);
              br=1;
              }
           while(p1!=END(L1) && br==0)
              {
                 p1=NEXT(p1,L1);
                 if(x==RETRIEVE(p1,L1))
                 {
                     temp=p1;
                     p1=NEXT(p1,L1);
                     DELETE(temp,&L1);
                     br=1;
                     }
                 }
                 br=0;
            p1=FIRST(L1);
            }
     }
                                           
int main (void)
{
    celltype *L1,*L2;
    position p1;
    elementtype x;
    char c[10];
    L1=(celltype*)malloc(sizeof(celltype));
    L2=(celltype*)malloc(sizeof(celltype));
    int n,i;
    printf("unesi broj clanova liste: ");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
       printf("unesi %d. element liste: ",i+1);
       scanf("&d",&x);
       INSERT(x,p1,&L1);
       p1=NEXT(p1,L1);
       }
 
    INSERTION_SORT(L1,&L2);
    p1=FIRST(L2);
    printf("Sortirana lista: ");
    for(i=0;i<n;i++)
    {printf("%d ",RETRIEVE(p1,L2));
    p1=NEXT(p1,L2);}
    return 0;
}


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


Pridružen/a: 11. 09. 2008. (10:54:06)
Postovi: (370)16
Sarma = la pohva - posuda
-29 = 108 - 137
Lokacija: Pula

PostPostano: 7:56 sub, 31. 10. 2009    Naslov: Re: gdje su greške? Citirajte i odgovorite

[quote="tidus"]
[code:1]
printf("unesi %d. element liste: ",i+1);
scanf("&d",&x);
[/code:1][/quote]
nisam gledao sve, vec kad si reko da je problem kod ucitavnja

tesko da ce ucitat sa &d, probaj sa %d :wink:
nadam se da si napravio i funkcije INSERT, EMPTY i ostale...
tidus (napisa):

Kod:

       printf("unesi %d. element liste: ",i+1);
       scanf("&d",&x);

nisam gledao sve, vec kad si reko da je problem kod ucitavnja

tesko da ce ucitat sa &d, probaj sa %d Wink
nadam se da si napravio i funkcije INSERT, EMPTY i ostale...



_________________
Mario Berljafa
[Vrh]
Korisnički profil Pošaljite privatnu poruku
tidus
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 16. 02. 2009. (12:47:59)
Postovi: (A5)16
Spol: muško
Sarma = la pohva - posuda
-1 = 15 - 16

PostPostano: 13:47 sub, 31. 10. 2009    Naslov: Re: gdje su greške? Citirajte i odgovorite

[quote="Gino"][quote="tidus"]
[code:1]
printf("unesi %d. element liste: ",i+1);
scanf("&d",&x);
[/code:1][/quote]
nisam gledao sve, vec kad si reko da je problem kod ucitavnja

tesko da ce ucitat sa &d, probaj sa %d :wink:
nadam se da si napravio i funkcije INSERT, EMPTY i ostale...[/quote]


Koja glupa greška! :oops: :oops: :oops:
Ali opet ne radi! I to odmah nakon što upišem prvi element liste! Sve mi izgleda da je u redu i uredno mi program kompajlira...
Gino (napisa):
tidus (napisa):

Kod:

       printf("unesi %d. element liste: ",i+1);
       scanf("&d",&x);

nisam gledao sve, vec kad si reko da je problem kod ucitavnja

tesko da ce ucitat sa &d, probaj sa %d Wink
nadam se da si napravio i funkcije INSERT, EMPTY i ostale...



Koja glupa greška! Embarassed Embarassed Embarassed
Ali opet ne radi! I to odmah nakon što upišem prvi element liste! Sve mi izgleda da je u redu i uredno mi program kompajlira...


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


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

PostPostano: 14:02 sub, 31. 10. 2009    Naslov: Citirajte i odgovorite

Posto nema implementacije ATPa, tesko je reci, no gotovo sigurno je tamo greska. Npr. oni [tt]malloc()[/tt]-i tu ne smiju biti; trebas sloziti [tt]MAKE_NULL[/tt] ili kako se to vec zove, a novoalocirane elemente trebas nekako inicijalizirati (barem im srediti pointer [tt]next[/tt] ili kako se vec zove).
Posto nema implementacije ATPa, tesko je reci, no gotovo sigurno je tamo greska. Npr. oni malloc()-i tu ne smiju biti; trebas sloziti MAKE_NULL ili kako se to vec zove, a novoalocirane elemente trebas nekako inicijalizirati (barem im srediti pointer next ili kako se vec zove).



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


Pridružen/a: 28. 06. 2009. (20:53:52)
Postovi: (59)16
Spol: muško
Sarma = la pohva - posuda
= 6 - 3
Lokacija: 1/039

PostPostano: 1:21 sri, 4. 11. 2009    Naslov: Citirajte i odgovorite

imam isti problem i gotovo siguran sam da funkciju insert nisam dobro napisao. nadam se da ima neka budna dobra dusa koja ce me uputiti? lol

[code:1]void INSERT (elementtype x, position p, LIST *L){
position temp=FIRST(*L);
do{
temp = NEXT(temp,*L);
} while (temp!= NEXT(p,*L));

p->next = (celltype *) malloc (sizeof(celltype));
p->next->element = x;
p->next->next = temp;
}[/code:1]

zasto to nije napisano u skripti??????
imam isti problem i gotovo siguran sam da funkciju insert nisam dobro napisao. nadam se da ima neka budna dobra dusa koja ce me uputiti? lol

Kod:
void INSERT (elementtype x, position p, LIST *L){
     position temp=FIRST(*L);
     do{
        temp = NEXT(temp,*L);
        } while (temp!= NEXT(p,*L));
       
     p->next = (celltype *) malloc (sizeof(celltype));
     p->next->element = x;
     p->next->next = temp;
     }


zasto to nije napisano u skripti??????



_________________
...to kaj ona ima kilu viska, ja ne marim...
[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.
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