Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
frutabella Forumaš(ica)
Pridružen/a: 09. 10. 2010. (16:35:36) Postovi: (24E)16
|
Postano: 17:12 uto, 28. 5. 2013 Naslov: Zadaci s predavanja |
|
|
http://web.math.pmf.unizg.hr/~singer/P2_1213/11.pdf
Pri kraju, zadnje objasnjeno je invertiranje datoteke (na mjestu).
Napisani kod mi nije jasan. Bila bih zahvalna kad bi netko objasnio na primjeru koji je zadan prethodno s 'a' 'b' 'c' 'd'.
Moje razmisljanje:
->pozicije se broje od 0, znaci prvi fseek ce bit postavljen na poziciju 3,
file_pola=1;
->sad smo u while petlji, sljedeci fseek je postavljen sad na pocetak na poziciju 0 (ne znam zasto u komentaru onda stoji "pomak unaprijed od pocetka") jer je pomak=0 i onda je ch_1='a';
->sljedeci fseek se onda pomice za jedno mjesto unazad od kraja, pa ce pozicija biti na 2, jer je pomak jos 0 pa se pomicemo samo za -1L,
znaci ch_2='c'
->trenutna pozicija je na 2, znaci sljedeci fseek se pomice za jedan unazad (tj. na poziciju 1 na kojoj stoji 'b')
-> i sad fputc ch_1='a' ubacuje na poziciju 1
->slejdeci fseek je na poziciji 0, jer je pomak jos 0, i onda fputc ch_2='c' stavlja na poziciju 0
i sad je stvar sljedeca: 'c' 'a' 'c' 'd'
Gdje je sad 'b'??
Negdje krivo razmisljam. :oops:
http://web.math.pmf.unizg.hr/~singer/P2_1213/11.pdf
Pri kraju, zadnje objasnjeno je invertiranje datoteke (na mjestu).
Napisani kod mi nije jasan. Bila bih zahvalna kad bi netko objasnio na primjeru koji je zadan prethodno s 'a' 'b' 'c' 'd'.
Moje razmisljanje:
->pozicije se broje od 0, znaci prvi fseek ce bit postavljen na poziciju 3,
file_pola=1;
->sad smo u while petlji, sljedeci fseek je postavljen sad na pocetak na poziciju 0 (ne znam zasto u komentaru onda stoji "pomak unaprijed od pocetka") jer je pomak=0 i onda je ch_1='a';
->sljedeci fseek se onda pomice za jedno mjesto unazad od kraja, pa ce pozicija biti na 2, jer je pomak jos 0 pa se pomicemo samo za -1L,
znaci ch_2='c'
->trenutna pozicija je na 2, znaci sljedeci fseek se pomice za jedan unazad (tj. na poziciju 1 na kojoj stoji 'b')
-> i sad fputc ch_1='a' ubacuje na poziciju 1
->slejdeci fseek je na poziciji 0, jer je pomak jos 0, i onda fputc ch_2='c' stavlja na poziciju 0
i sad je stvar sljedeca: 'c' 'a' 'c' 'd'
Gdje je sad 'b'??
Negdje krivo razmisljam.
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 17:57 uto, 28. 5. 2013 Naslov: |
|
|
[tt]SEEK_END[/tt] te baca na kraj datoteke. Ako tako hoces, na "znak iza zadnjeg", dakle u tvom slucaju na poziciju 4. Da nije tako, eventualno pisanje nakon takvog skoka bi pregazilo zadnji znak, a to ne zelimo ako smo napravili skok "na kraj". ;)
Dalje je lako. S onih [tt]-1[/tt] idemo jedno mjesto u negativu, dakle mjesto prije zadnjeg, sto je zadnji znak u datoteci ([tt]'d'[/tt], a ne [tt]'c'[/tt]). Jasnije? :)
Komentar "pomak unaprijed od pocetka" je koristan u kontekstu same petlje: u svakom koraku petlje imamo "pomak od pocetka" za [tt]pomak[/tt] mjesta.
SEEK_END te baca na kraj datoteke. Ako tako hoces, na "znak iza zadnjeg", dakle u tvom slucaju na poziciju 4. Da nije tako, eventualno pisanje nakon takvog skoka bi pregazilo zadnji znak, a to ne zelimo ako smo napravili skok "na kraj".
Dalje je lako. S onih -1 idemo jedno mjesto u negativu, dakle mjesto prije zadnjeg, sto je zadnji znak u datoteci ('d', a ne 'c'). Jasnije?
Komentar "pomak unaprijed od pocetka" je koristan u kontekstu same petlje: u svakom koraku petlje imamo "pomak od pocetka" za pomak mjesta.
_________________ 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] |
|
frutabella Forumaš(ica)
Pridružen/a: 09. 10. 2010. (16:35:36) Postovi: (24E)16
|
Postano: 18:45 uto, 28. 5. 2013 Naslov: |
|
|
Malo je jasnije, ali opet nesto mi ne stima:
->pozicije se broje od 0, znaci prvi fseek ce bit postavljen na poziciju [b]4,[/b]
file_pola=[b]2[/b];
->sad smo u while petlji, sljedeci fseek je postavljen sad na pocetak na poziciju 0 jer je pomak=0 i onda je ch_1='a';
->sljedeci fseek se onda pomice za jedno mjesto unazad od kraja, pa ce pozicija biti na [b]3[/b], jer je pomak jos 0 pa se pomicemo samo za -1L,
znaci [b]ch_2='d[/b]'
[color=red]->trenutna pozicija je na [b]3[/b], znaci sljedeci fseek se pomice za jedan unazad (tj. [b]na poziciju 2 na kojoj stoji 'c'[/b])
[/color]
-> i sad fputc ch_1='a' ubacuje na poziciju [b]2[/b]
->slejdeci fseek je na poziciji 0, jer je pomak jos 0, i onda fputc [b]ch_2='d' [/b]stavlja na poziciju 0
i sad je stvar sljedeca: 'd' 'b' 'a' 'd'
Mislim da sad to crveno nije dobro. Jer da se tu s trenutne pozicije ne vratim za jedno, lijepo bi se zamijenili a i d. :oops:
Malo je jasnije, ali opet nesto mi ne stima:
→pozicije se broje od 0, znaci prvi fseek ce bit postavljen na poziciju 4,
file_pola=2;
→sad smo u while petlji, sljedeci fseek je postavljen sad na pocetak na poziciju 0 jer je pomak=0 i onda je ch_1='a';
→sljedeci fseek se onda pomice za jedno mjesto unazad od kraja, pa ce pozicija biti na 3, jer je pomak jos 0 pa se pomicemo samo za -1L,
znaci ch_2='d'
→trenutna pozicija je na 3, znaci sljedeci fseek se pomice za jedan unazad (tj. na poziciju 2 na kojoj stoji 'c')
→ i sad fputc ch_1='a' ubacuje na poziciju 2
→slejdeci fseek je na poziciji 0, jer je pomak jos 0, i onda fputc ch_2='d' stavlja na poziciju 0
i sad je stvar sljedeca: 'd' 'b' 'a' 'd'
Mislim da sad to crveno nije dobro. Jer da se tu s trenutne pozicije ne vratim za jedno, lijepo bi se zamijenili a i d.
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
frutabella Forumaš(ica)
Pridružen/a: 09. 10. 2010. (16:35:36) Postovi: (24E)16
|
|
[Vrh] |
|
|