Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
rat in a cage Forumaš(ica)


Pridružen/a: 25. 11. 2004. (21:45:48) Postovi: (22C)16
Lokacija: Zg
|
Postano: 11:58 čet, 18. 5. 2006 Naslov: vezana lista |
|
|
Trebam pomoć s next zadatkom:
[b]Zad:[/b]
Napišite funkciju sa prototipom [i]cvor *slova(cvor *)[/i] koja prima pokazivač na početak liste. Funkcija treba ispred svakog čvora [i]u[/i] dodati nove čvorove čiji stringovi će se sastojati od pojedinih znakova stringa iz čvora [i]u[/i], u istom poretku. Na primjer, ako se ulazna lista sastojala redom od 2 čvora u kojima je pisalo: [i](jedan)(pet)[/i], onda preuređena lista treba izgledati ovako: [i](j)(e)(d)(a)(n)(jedan)(p)(e)(t)(pet)[/i]; tu listu treba ispisati na ekran.
evo što sam ja napisao al ne radi, a ne mogu nać di sam fulao:
[code:1]cvor *slova (cvor *l)
{
cvor *t, *k, *pom, *p;
char rijec[21];
int br=0,i;
p=l;
for (t=l;t!=NULL;t=t->next)
{
k=t;
strcpy (rijec, t->r);
for (i=0;i<strlen(rijec);i++)
{
pom=(cvor*)malloc(sizeof(cvor));
pom->r[0]=rijec[i];
pom->r[1]='\0';
p->next=pom;
if ((br==0)&&(i==0)) l=pom;
else if (i==0)
{
k=pom;
pom->next=t;
}
else
{
pom->next=t;
k->next=pom;
k=pom;
}
}
p=t;
br=br+1;
}
return l;
} [/code:1]
odmah ova prva for petlja je beskonačna, zašto?
pliz pomagajte :oops:
Trebam pomoć s next zadatkom:
Zad:
Napišite funkciju sa prototipom cvor *slova(cvor *) koja prima pokazivač na početak liste. Funkcija treba ispred svakog čvora u dodati nove čvorove čiji stringovi će se sastojati od pojedinih znakova stringa iz čvora u, u istom poretku. Na primjer, ako se ulazna lista sastojala redom od 2 čvora u kojima je pisalo: (jedan)(pet), onda preuređena lista treba izgledati ovako: (j)(e)(d)(a)(n)(jedan)(p)(e)(t)(pet); tu listu treba ispisati na ekran.
evo što sam ja napisao al ne radi, a ne mogu nać di sam fulao:
Kod: | cvor *slova (cvor *l)
{
cvor *t, *k, *pom, *p;
char rijec[21];
int br=0,i;
p=l;
for (t=l;t!=NULL;t=t->next)
{
k=t;
strcpy (rijec, t->r);
for (i=0;i<strlen(rijec);i++)
{
pom=(cvor*)malloc(sizeof(cvor));
pom->r[0]=rijec[i];
pom->r[1]='\0';
p->next=pom;
if ((br==0)&&(i==0)) l=pom;
else if (i==0)
{
k=pom;
pom->next=t;
}
else
{
pom->next=t;
k->next=pom;
k=pom;
}
}
p=t;
br=br+1;
}
return l;
} |
odmah ova prva for petlja je beskonačna, zašto?
pliz pomagajte
|
|
[Vrh] |
|
vili Forumaš(ica)


Pridružen/a: 08. 06. 2005. (22:40:59) Postovi: (14A)16
Spol: 
Lokacija: Keglić
|
Postano: 11:46 pet, 19. 5. 2006 Naslov: |
|
|
Nisam skroz analizirao cijeli kod. inače bi varijable mogle biti malo, hm, pa recimo da kroz njihovo ime objasniš kaj rade, izgubio sam se u t, k, p... :oops:
[quote][code:1]p->next=pom; [/code:1][/quote]
Primjetio sam da bi ti trebalo pisati [code:1]pom->next=p[/code:1] jer ga ovako metneš iza, a ne ispred člana liste i pogube ti se veze odmah na početku. Nisam probao kompajlirati, pa ako ti ne radi, javi, i pojasni mi kaj je koji od t, p i k jer sam nesposoban :?
Nisam skroz analizirao cijeli kod. inače bi varijable mogle biti malo, hm, pa recimo da kroz njihovo ime objasniš kaj rade, izgubio sam se u t, k, p...
Primjetio sam da bi ti trebalo pisati jer ga ovako metneš iza, a ne ispred člana liste i pogube ti se veze odmah na početku. Nisam probao kompajlirati, pa ako ti ne radi, javi, i pojasni mi kaj je koji od t, p i k jer sam nesposoban
|
|
[Vrh] |
|
pecina Forumaš(ica)


Pridružen/a: 19. 01. 2005. (14:15:23) Postovi: (157)16
Spol: 
Lokacija: Happily traveling through space since 1986!
|
|
[Vrh] |
|
HijenA Forumaš(ica)

Pridružen/a: 23. 01. 2004. (16:46:04) Postovi: (3D2)16
Spol: 
Lokacija: Prazan skup ;-)
|
Postano: 14:31 pet, 19. 5. 2006 Naslov: |
|
|
[quote="pecina"]Ne znam što ti nije točno pa sam prepravio program.
[code:1]cvor *slova (cvor *l)
{
cvor *pNovaLista = 0, *pIter = 0, *pTemp = 0;[/code:1]
[/quote]
ok...meni ovo od pocetka nije jasno. AFAIK, ovako ne mozes pridruzivati vrijednosti. pazi, ti si pointeru koji bi trebao pokazivati na strukturu dodijelio vrijednost 0 :-? jel samo to meni cudno ili...?
BTW. koliko sam shvatio pIter bi trebao biti brojac, zar ne? zasto koristiti tako definiran brojac a ne jednostavno napravit da ti je brojac kao varijabla tipa int koji se za svaku iteraciju poveca za 1 (ili za koji god vec broj)?
EDIT: za taj pIter isto vrijedi ovo sto sam gore napisao kod pridruzivanja vrijednosti.
pecina (napisa): | Ne znam što ti nije točno pa sam prepravio program.
Kod: | cvor *slova (cvor *l)
{
cvor *pNovaLista = 0, *pIter = 0, *pTemp = 0; |
|
ok...meni ovo od pocetka nije jasno. AFAIK, ovako ne mozes pridruzivati vrijednosti. pazi, ti si pointeru koji bi trebao pokazivati na strukturu dodijelio vrijednost 0 jel samo to meni cudno ili...?
BTW. koliko sam shvatio pIter bi trebao biti brojac, zar ne? zasto koristiti tako definiran brojac a ne jednostavno napravit da ti je brojac kao varijabla tipa int koji se za svaku iteraciju poveca za 1 (ili za koji god vec broj)?
EDIT: za taj pIter isto vrijedi ovo sto sam gore napisao kod pridruzivanja vrijednosti.
|
|
[Vrh] |
|
pecina Forumaš(ica)


Pridružen/a: 19. 01. 2005. (14:15:23) Postovi: (157)16
Spol: 
Lokacija: Happily traveling through space since 1986!
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 15:10 pet, 19. 5. 2006 Naslov: |
|
|
AFAIK, [tt]NULL[/tt] je nula castana na pointer:
[code:1][vsego@degiorgi ~]$ grep "define NULL" /usr/include/*.h
/usr/include/gdcache.h:#define NULL (void *)0
/usr/include/libio.h:# define NULL (__null)
/usr/include/libio.h:# define NULL ((void*)0)
/usr/include/libio.h:# define NULL (0)
/usr/include/malloc.h:# define NULL 0
/usr/include/malloc.h:# define NULL ((__malloc_ptr_t) 0)
/usr/include/portab.h:#define NULL 0
/usr/include/portab.h:#define NULL ((void *)0)[/code:1]
Ako direktno pridruzujes, onda se castanje vrsi automatski. 8)
Ali, slazem se da je bolje pisati [tt]NULL[/tt] - preglednije je. ;)
AFAIK, NULL je nula castana na pointer:
Kod: | [vsego@degiorgi ~]$ grep "define NULL" /usr/include/*.h
/usr/include/gdcache.h:#define NULL (void *)0
/usr/include/libio.h:# define NULL (__null)
/usr/include/libio.h:# define NULL ((void*)0)
/usr/include/libio.h:# define NULL (0)
/usr/include/malloc.h:# define NULL 0
/usr/include/malloc.h:# define NULL ((__malloc_ptr_t) 0)
/usr/include/portab.h:#define NULL 0
/usr/include/portab.h:#define NULL ((void *)0) |
Ako direktno pridruzujes, onda se castanje vrsi automatski.
Ali, slazem se da je bolje pisati NULL - preglednije je.
_________________ 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] |
|
rat in a cage Forumaš(ica)


Pridružen/a: 25. 11. 2004. (21:45:48) Postovi: (22C)16
Lokacija: Zg
|
|
[Vrh] |
|
|