Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
malena Forumaš(ica)

Pridružen/a: 27. 03. 2009. (16:43:42) Postovi: (62)16
Spol: 
Lokacija: ...
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 17:20 sub, 20. 6. 2009 Naslov: |
|
|
Za sve [tt]n[/tt] sigurno nisi. :P Sorry, ne pada za [tt]n[/tt]-ove, no niti ne radi dobro:
[code:1][vsego@petko tmp]$ gcc t.c && ./a.out
Koji po redu brisemo:
2
Prije deleten:
Br= 7 ,Naz= 8
Br= 6 ,Naz= 7
Br= 5 ,Naz= 6
Br= 4 ,Naz= 5
Br= 2 ,Naz= 3
Nakon deleten:
Br= 0 ,Naz= 8
Br= 6 ,Naz= 7
Br= 154271808 ,Naz= 6
Br= 4 ,Naz= 5
Br= 154271776 ,Naz= 3[/code:1]
Ovdje:
[code:1] del=pom;
pom=pom->next;
free(del);[/code:1]
potrgas listu, jer brises [tt]pom[/tt], a njegov prethodnik i dalje pokazuje na njega. :? Crtati! :prodike:
Sto se drugog tice, krivo sam se izrazio. :oops: Obrise prvog, ali onda krene dalje od (bivseg) treceg (jer se, osim kod brisanja prvog, brise sljedbenik od [tt]pom[/tt], pa novog prvog preskocis); drugog nece obrisati ako i prvi i drugi odgovaraju uvjetu. :? Tu treba [tt]while()[/tt] (pogledaj vjezbe; tamo je identican zadatak, samo s drugim uvjetom). 8)
Inace, niti brisanje nije dobro. :? Slozi listu:
[code:1] razlomak *x=NULL;
x=ubaci(x, 2, 3);
x=ubaci(x, -3, 5);
x=ubaci(x, 4, -7);
x=ubaci(x, -1, 8);[/code:1]
i brisanje ce ti srusiti program. :( Kod brisanja ne smijes bezuvjetno skakati na iduceg ([tt]pom=pom->next;[/tt]) jer onda ne provjeris sve koje trebas, plus mozes izletjeti iz liste, pa te uvjet od [tt]while()[/tt]-a srusi. :(
Please, prouciti u vjezbama taj zadatak. :)
Sorry na greskama iz proslog posta. :oops: Probudise me Jehovini svjedoci ili nesto njima slicno... :gloom: :bully:
Za sve n sigurno nisi. Sorry, ne pada za n-ove, no niti ne radi dobro:
Kod: | [vsego@petko tmp]$ gcc t.c && ./a.out
Koji po redu brisemo:
2
Prije deleten:
Br= 7 ,Naz= 8
Br= 6 ,Naz= 7
Br= 5 ,Naz= 6
Br= 4 ,Naz= 5
Br= 2 ,Naz= 3
Nakon deleten:
Br= 0 ,Naz= 8
Br= 6 ,Naz= 7
Br= 154271808 ,Naz= 6
Br= 4 ,Naz= 5
Br= 154271776 ,Naz= 3 |
Ovdje:
Kod: | del=pom;
pom=pom->next;
free(del); |
potrgas listu, jer brises pom, a njegov prethodnik i dalje pokazuje na njega. Crtati!
Sto se drugog tice, krivo sam se izrazio. Obrise prvog, ali onda krene dalje od (bivseg) treceg (jer se, osim kod brisanja prvog, brise sljedbenik od pom, pa novog prvog preskocis); drugog nece obrisati ako i prvi i drugi odgovaraju uvjetu. Tu treba while() (pogledaj vjezbe; tamo je identican zadatak, samo s drugim uvjetom).
Inace, niti brisanje nije dobro. Slozi listu:
Kod: | razlomak *x=NULL;
x=ubaci(x, 2, 3);
x=ubaci(x, -3, 5);
x=ubaci(x, 4, -7);
x=ubaci(x, -1, 8); |
i brisanje ce ti srusiti program. Kod brisanja ne smijes bezuvjetno skakati na iduceg (pom=pom→next;) jer onda ne provjeris sve koje trebas, plus mozes izletjeti iz liste, pa te uvjet od while()-a srusi.
Please, prouciti u vjezbama taj zadatak.
Sorry na greskama iz proslog posta. Probudise me Jehovini svjedoci ili nesto njima slicno...
_________________ 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] |
|
malena Forumaš(ica)

Pridružen/a: 27. 03. 2009. (16:43:42) Postovi: (62)16
Spol: 
Lokacija: ...
|
|
[Vrh] |
|
Lafiel Forumaš(ica)


Pridružen/a: 26. 09. 2007. (09:56:59) Postovi: (153)16
Spol: 
|
Postano: 22:03 sub, 20. 6. 2009 Naslov: |
|
|
[b]Zadatak 6.8.[/b] Riječ je o onom skočimišu koji skače po cesti/brojevnom pravcu pa treba riješiti sa strukturama pamteći gdje skače i koji znak ostavlja.
E sad, riješila sam taj prvi dio s pamćenjem skokova i pozicija, relociranjem memorije i na kraju sortiranjem niza tih structova, napravila sam si kontrolni ispis i stvarno cijeli niz dobro ispiše. ALI, zadatak traži da ispišem slova po redu, [u]a ako neki cijeli broj na tom brojevnom pravcu nije "iskorišten", da napiše crticu[/u]. I sad imam problema s time. [img]http://s2.photobucket.com/albums/y29/waterfly89/Smilies/zid.gif[/img]
[code:1]printf(" %c ", mis[0].znak);
int br=mis[0].skok;
for (int l=1; l<=(mis[i].skok-mis[0].skok); l++){br++;
if (mis[l].skok==br) printf(" %c ", mis[l].znak);
else printf("-");}[/code:1]
[size=1](petlja ide od 1 (budući da smo nulti ispisali) do najdesnije pozicije na pravcu)[/size]
Zanemarimo trenutno činjenicu da zadatak kaže da mi ne smije ispisivati više od jednog znaka po poziciji.
Ideja mi je dakle da imam neki brojač koji će krenuti od najljevije miševe pozicije i povećavati se svakim prolaskom po petlji i ako je skočimiš skočio na broj koji taj brojač pokazuje, trebao bi ispisati skočimišev znak. Ako mi skočimiš iskoristi svaki broj na pravcu, ovaj ispis radi, ali preskoči li neki i trebam li pisati crtice, program mi ispiše sve crtice do kraja niza. :?
Zadatak 6.8. Riječ je o onom skočimišu koji skače po cesti/brojevnom pravcu pa treba riješiti sa strukturama pamteći gdje skače i koji znak ostavlja.
E sad, riješila sam taj prvi dio s pamćenjem skokova i pozicija, relociranjem memorije i na kraju sortiranjem niza tih structova, napravila sam si kontrolni ispis i stvarno cijeli niz dobro ispiše. ALI, zadatak traži da ispišem slova po redu, a ako neki cijeli broj na tom brojevnom pravcu nije "iskorišten", da napiše crticu. I sad imam problema s time.
Kod: | printf(" %c ", mis[0].znak);
int br=mis[0].skok;
for (int l=1; l<=(mis[i].skok-mis[0].skok); l++){br++;
if (mis[l].skok==br) printf(" %c ", mis[l].znak);
else printf("-");} |
(petlja ide od 1 (budući da smo nulti ispisali) do najdesnije pozicije na pravcu)
Zanemarimo trenutno činjenicu da zadatak kaže da mi ne smije ispisivati više od jednog znaka po poziciji.
Ideja mi je dakle da imam neki brojač koji će krenuti od najljevije miševe pozicije i povećavati se svakim prolaskom po petlji i ako je skočimiš skočio na broj koji taj brojač pokazuje, trebao bi ispisati skočimišev znak. Ako mi skočimiš iskoristi svaki broj na pravcu, ovaj ispis radi, ali preskoči li neki i trebam li pisati crtice, program mi ispiše sve crtice do kraja niza.
_________________ Weit von hier fällt Gold von den Sternen
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 23:31 sub, 20. 6. 2009 Naslov: |
|
|
[quote="malena"]samo da znas crtala san i na papiru je dobro izgledalo :widesmile2:[/quote]
Hmda... ljudi cesto crtaju ono sto su si zamislili, a ne ono sto pise u kodu. :) Probaj sada, kad znas da kod ne radi dobro, ici lajnu po lajnu i crtati. :D Nema veze sto je krivo; bitno je da ti "klikne" sto se dogadja i zato to napravi bas na tom pogresnom kodu! :tso:
[quote="malena"]znaci, bez obzira na to sta ja znan da brisen prvog mora se postaviti uvjet i kad njega brisen ili...[/quote]
Pa, mora biti uvjet, naravno. 8) Uvjet za brisanje se tice svih; prvi se razlikuje po nacinu brisanja. :)
[quote="Lafiel"][b]Zadatak 6.8.[/b] Riječ je o onom skočimišu koji skače po cesti/brojevnom pravcu pa treba riješiti sa strukturama pamteći gdje skače i koji znak ostavlja.
E sad, riješila sam taj prvi dio s pamćenjem skokova i pozicija, relociranjem memorije i na kraju sortiranjem niza tih structova, napravila sam si kontrolni ispis i stvarno cijeli niz dobro ispiše. ALI, zadatak traži da ispišem slova po redu, [u]a ako neki cijeli broj na tom brojevnom pravcu nije "iskorišten", da napiše crticu[/u]. I sad imam problema s time. [img]http://s2.photobucket.com/albums/y29/waterfly89/Smilies/zid.gif[/img]
[code:1]printf(" %c ", mis[0].znak);
int br=mis[0].skok;
for (int l=1; l<=(mis[i].skok-mis[0].skok); l++){br++;
if (mis[l].skok==br) printf(" %c ", mis[l].znak);
else printf("-");}[/code:1]
[size=1](petlja ide od 1 (budući da smo nulti ispisali) do najdesnije pozicije na pravcu)[/size]
Zanemarimo trenutno činjenicu da zadatak kaže da mi ne smije ispisivati više od jednog znaka po poziciji.
Ideja mi je dakle da imam neki brojač koji će krenuti od najljevije miševe pozicije i povećavati se svakim prolaskom po petlji i ako je skočimiš skočio na broj koji taj brojač pokazuje, trebao bi ispisati skočimišev znak. Ako mi skočimiš iskoristi svaki broj na pravcu, ovaj ispis radi, ali preskoči li neki i trebam li pisati crtice, program mi ispiše sve crtice do kraja niza. :?[/quote]
Ako je [tt]mis[i].skok[/tt] pozicija na koju je skocimis skocio u [tt]i[/tt]-tom koraku, a [tt]mis[i].znak[/tt] znak koji je on ostavio i tih skokova je ukupno bilo [tt]n[/tt], onda ispis ide ovako:
[code:1]printf("%c", mis[0].znak); /* Ispises prvi znak */
for (i = 1; i < n; ++i) { /* tu ispisujemo sve ostale */
/* prvo razmaci: na poziciji mis[i-1].skok pise neki znak; na poziciji */
/* mis[i].skok ce pisati iduci znak => sve izmedju se popunjava crticama */
for (j = mis[i-1].skok + 1; j <= mis[i].skok - 1; ++j) printf("_");
/* sada ispisemo znak na poziciji mis[i].skok */
printf("%c", mis[i].znak);
}
printf("\n");[/code:1]
Dakle, pravim se blesav (neki bi rekli da se ne pravim :PP) i ponasam se kao da su mi stupci na ekranu numerirani od [tt]mis[0].skok[/tt] do [tt]mis[n-1].skok[/tt] i tako "crtam". 8) Probaj skicirati na papiru sto ovo radi i bit ce ti jasno (bar je bilo na vjezbama i konzultacijama kad sam to radio). :)
malena (napisa): | samo da znas crtala san i na papiru je dobro izgledalo  |
Hmda... ljudi cesto crtaju ono sto su si zamislili, a ne ono sto pise u kodu. Probaj sada, kad znas da kod ne radi dobro, ici lajnu po lajnu i crtati. Nema veze sto je krivo; bitno je da ti "klikne" sto se dogadja i zato to napravi bas na tom pogresnom kodu!
malena (napisa): | znaci, bez obzira na to sta ja znan da brisen prvog mora se postaviti uvjet i kad njega brisen ili... |
Pa, mora biti uvjet, naravno. Uvjet za brisanje se tice svih; prvi se razlikuje po nacinu brisanja.
Lafiel (napisa): | Zadatak 6.8. Riječ je o onom skočimišu koji skače po cesti/brojevnom pravcu pa treba riješiti sa strukturama pamteći gdje skače i koji znak ostavlja.
E sad, riješila sam taj prvi dio s pamćenjem skokova i pozicija, relociranjem memorije i na kraju sortiranjem niza tih structova, napravila sam si kontrolni ispis i stvarno cijeli niz dobro ispiše. ALI, zadatak traži da ispišem slova po redu, a ako neki cijeli broj na tom brojevnom pravcu nije "iskorišten", da napiše crticu. I sad imam problema s time.
Kod: | printf(" %c ", mis[0].znak);
int br=mis[0].skok;
for (int l=1; l<=(mis[i].skok-mis[0].skok); l++){br++;
if (mis[l].skok==br) printf(" %c ", mis[l].znak);
else printf("-");} |
(petlja ide od 1 (budući da smo nulti ispisali) do najdesnije pozicije na pravcu)
Zanemarimo trenutno činjenicu da zadatak kaže da mi ne smije ispisivati više od jednog znaka po poziciji.
Ideja mi je dakle da imam neki brojač koji će krenuti od najljevije miševe pozicije i povećavati se svakim prolaskom po petlji i ako je skočimiš skočio na broj koji taj brojač pokazuje, trebao bi ispisati skočimišev znak. Ako mi skočimiš iskoristi svaki broj na pravcu, ovaj ispis radi, ali preskoči li neki i trebam li pisati crtice, program mi ispiše sve crtice do kraja niza.  |
Ako je mis[i].skok pozicija na koju je skocimis skocio u i-tom koraku, a mis[i].znak znak koji je on ostavio i tih skokova je ukupno bilo n, onda ispis ide ovako:
Kod: | printf("%c", mis[0].znak); /* Ispises prvi znak */
for (i = 1; i < n; ++i) { /* tu ispisujemo sve ostale */
/* prvo razmaci: na poziciji mis[i-1].skok pise neki znak; na poziciji */
/* mis[i].skok ce pisati iduci znak => sve izmedju se popunjava crticama */
for (j = mis[i-1].skok + 1; j <= mis[i].skok - 1; ++j) printf("_");
/* sada ispisemo znak na poziciji mis[i].skok */
printf("%c", mis[i].znak);
}
printf("\n"); |
Dakle, pravim se blesav (neki bi rekli da se ne pravim ) i ponasam se kao da su mi stupci na ekranu numerirani od mis[0].skok do mis[n-1].skok i tako "crtam". Probaj skicirati na papiru sto ovo radi i bit ce ti jasno (bar je bilo na vjezbama i konzultacijama kad sam to radio).
_________________ 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] |
|
Lafiel Forumaš(ica)


Pridružen/a: 26. 09. 2007. (09:56:59) Postovi: (153)16
Spol: 
|
|
[Vrh] |
|
Lafiel Forumaš(ica)


Pridružen/a: 26. 09. 2007. (09:56:59) Postovi: (153)16
Spol: 
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
|