Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
consuelo Forumaš(ica)
Pridružen/a: 07. 09. 2011. (14:04:48) Postovi: (1B)16
|
Postano: 23:59 ned, 17. 11. 2013 Naslov: |
|
|
[quote="hendrix"]Kad se rijesis ovih trivijalnih slucajeva (ako trebas, mozda pretpostavka zadatka bude da ima vise od 2 clana), mozes prva dva clana spremiti u dva razlicita registra, veci u, recimo, D1, a manji u D2.
Svaki iduci clan onda prvo usporedis s onim u D1 - ako je veci, stavis njega u D1, a ovog iz D1 prebacis u D2 i krenes na iduci korak petlje.
Ako nije, provjeris je li mozda veci od elementa u D2 pa, ako jest, tamo ubacis njega i, u svakom slucaju, nastavis na iduci korak.
Jedna petlja, jedno grananje vise, ali dosta jednostavnije od 3 petlje. :D
(Naravno, vjerojatno postoji i nesto bolje.)[/quote]
To je bila i moja ideja, ovako nekako :D
[code:1]DATA: EQU $6000
PROGRAM: EQU $2000
ORG DATA
START: DS.L 1
RESULT: DS.W 1
ORG PROGRAM
KRENI:
MOVEA.L START, A0
MOVE.W (A0)+, D0 ; D0 JE BROJAC
BEQ GOTOVO
MOVEQ #0, D1
MOVE.W D1, D2 ;U D1 JE NAJVECI, U D2 JE DRUGI NAJVECI
LOOP:
MOVE.W (A0)+, D3
CMP D1, D3
BHI LOOP1
CMP D2, D3
BHI LOOP2
SUBQ #1, D0
BEQ GOTOVO
BNE LOOP
LOOP1:
MOVE.W D1, D2
MOVE.W D3, D1
SUBQ #1, D0
BNE LOOP
BEQ GOTOVO
LOOP2:
MOVE.W D3, D2
SUBQ #1, D0
BNE LOOP
GOTOVO:
MOVE.W D2, RESULT
TRAP #15
END KRENI
[/code:1]
hendrix (napisa): | Kad se rijesis ovih trivijalnih slucajeva (ako trebas, mozda pretpostavka zadatka bude da ima vise od 2 clana), mozes prva dva clana spremiti u dva razlicita registra, veci u, recimo, D1, a manji u D2.
Svaki iduci clan onda prvo usporedis s onim u D1 - ako je veci, stavis njega u D1, a ovog iz D1 prebacis u D2 i krenes na iduci korak petlje.
Ako nije, provjeris je li mozda veci od elementa u D2 pa, ako jest, tamo ubacis njega i, u svakom slucaju, nastavis na iduci korak.
Jedna petlja, jedno grananje vise, ali dosta jednostavnije od 3 petlje.
(Naravno, vjerojatno postoji i nesto bolje.) |
To je bila i moja ideja, ovako nekako
Kod: | DATA: EQU $6000
PROGRAM: EQU $2000
ORG DATA
START: DS.L 1
RESULT: DS.W 1
ORG PROGRAM
KRENI:
MOVEA.L START, A0
MOVE.W (A0)+, D0 ; D0 JE BROJAC
BEQ GOTOVO
MOVEQ #0, D1
MOVE.W D1, D2 ;U D1 JE NAJVECI, U D2 JE DRUGI NAJVECI
LOOP:
MOVE.W (A0)+, D3
CMP D1, D3
BHI LOOP1
CMP D2, D3
BHI LOOP2
SUBQ #1, D0
BEQ GOTOVO
BNE LOOP
LOOP1:
MOVE.W D1, D2
MOVE.W D3, D1
SUBQ #1, D0
BNE LOOP
BEQ GOTOVO
LOOP2:
MOVE.W D3, D2
SUBQ #1, D0
BNE LOOP
GOTOVO:
MOVE.W D2, RESULT
TRAP #15
END KRENI
|
|
|
[Vrh] |
|
Shirohige Forumaš(ica)
Pridružen/a: 16. 11. 2012. (20:19:56) Postovi: (ED)16
Spol:
|
Postano: 0:05 pon, 18. 11. 2013 Naslov: |
|
|
[quote="hendrix"]Kad se rijesis ovih trivijalnih slucajeva (ako trebas, mozda pretpostavka zadatka bude da ima vise od 2 clana), mozes prva dva clana spremiti u dva razlicita registra, veci u, recimo, D1, a manji u D2.
Svaki iduci clan onda prvo usporedis s onim u D1 - ako je veci, stavis njega u D1, a ovog iz D1 prebacis u D2 i krenes na iduci korak petlje.
Ako nije, provjeris je li mozda veci od elementa u D2 pa, ako jest, tamo ubacis njega i, u svakom slucaju, nastavis na iduci korak.
Jedna petlja, jedno grananje vise, ali dosta jednostavnije od 3 petlje. :D
(Naravno, vjerojatno postoji i nesto bolje.)[/quote]
Tako sam već i razmišljao, tj. prvo sam spremio prva dva člana te ih usporedio i onda nastavio dalje, ali onda sam se sjetio da mi nitko ne garantira da su prva dva člana različita. Nigdje u zadatku ne piše da taj niz mora uopće bit duljine >0, >1 niti da su svi članovi različiti.
Sklepao sam do sad 3 načina, jedan s jednom petljom, jedan s dvije petlje i ovaj s tri petlje i jedino ovaj zadnji je siguran, na svakom drugom postoji onaj "ALI" jer kao što vidiš, u kolokviju nema nikakvih "možete pretpostaviti". :(
hendrix (napisa): | Kad se rijesis ovih trivijalnih slucajeva (ako trebas, mozda pretpostavka zadatka bude da ima vise od 2 clana), mozes prva dva clana spremiti u dva razlicita registra, veci u, recimo, D1, a manji u D2.
Svaki iduci clan onda prvo usporedis s onim u D1 - ako je veci, stavis njega u D1, a ovog iz D1 prebacis u D2 i krenes na iduci korak petlje.
Ako nije, provjeris je li mozda veci od elementa u D2 pa, ako jest, tamo ubacis njega i, u svakom slucaju, nastavis na iduci korak.
Jedna petlja, jedno grananje vise, ali dosta jednostavnije od 3 petlje.
(Naravno, vjerojatno postoji i nesto bolje.) |
Tako sam već i razmišljao, tj. prvo sam spremio prva dva člana te ih usporedio i onda nastavio dalje, ali onda sam se sjetio da mi nitko ne garantira da su prva dva člana različita. Nigdje u zadatku ne piše da taj niz mora uopće bit duljine >0, >1 niti da su svi članovi različiti.
Sklepao sam do sad 3 načina, jedan s jednom petljom, jedan s dvije petlje i ovaj s tri petlje i jedino ovaj zadnji je siguran, na svakom drugom postoji onaj "ALI" jer kao što vidiš, u kolokviju nema nikakvih "možete pretpostaviti".
|
|
[Vrh] |
|
hendrix Forumaš(ica)
Pridružen/a: 03. 09. 2012. (15:59:06) Postovi: (92)16
|
Postano: 1:20 pon, 18. 11. 2013 Naslov: |
|
|
[quote="Shirohige"]ali onda sam se sjetio da mi nitko ne garantira da su prva dva člana različita[/quote]
Zasto je to bitno? Prvog spremis u D1, drugog u D2. Algoritam dalje radi potpuno neovisno o tome jesu li na D1 i D2 iste ili razlicite vrijednosti; ako je neki clan niza veci od onog u D1, potisnut ce ga na D2 i otici na D1.
A za ovo da niz ne mora biti duljine >0 - mislim, ili se nadam :D, da asistentu nije bila namjera traziti takve detalje, imho, za kolokvij na papiru - cak i nepotrebne.
Shirohige (napisa): | ali onda sam se sjetio da mi nitko ne garantira da su prva dva člana različita |
Zasto je to bitno? Prvog spremis u D1, drugog u D2. Algoritam dalje radi potpuno neovisno o tome jesu li na D1 i D2 iste ili razlicite vrijednosti; ako je neki clan niza veci od onog u D1, potisnut ce ga na D2 i otici na D1.
A za ovo da niz ne mora biti duljine >0 - mislim, ili se nadam , da asistentu nije bila namjera traziti takve detalje, imho, za kolokvij na papiru - cak i nepotrebne.
|
|
[Vrh] |
|
Shirohige Forumaš(ica)
Pridružen/a: 16. 11. 2012. (20:19:56) Postovi: (ED)16
Spol:
|
Postano: 1:52 pon, 18. 11. 2013 Naslov: |
|
|
[quote="hendrix"][quote="Shirohige"]ali onda sam se sjetio da mi nitko ne garantira da su prva dva člana različita[/quote]
Zasto je to bitno? Prvog spremis u D1, drugog u D2. Algoritam dalje radi potpuno neovisno o tome jesu li na D1 i D2 iste ili razlicite vrijednosti; ako je neki clan niza veci od onog u D1, potisnut ce ga na D2 i otici na D1.
A za ovo da niz ne mora biti duljine >0 - mislim, ili se nadam :D, da asistentu nije bila namjera traziti takve detalje, imho, za kolokvij na papiru - cak i nepotrebne.[/quote]
Ako su prva dva člana jednaka, a usput i oba maksimalne vrijednosti, a svi ostali manji onda nijedan član niza neće potisnuti D1 u D2 pa ćemo kao rezultat dobiti da je u D2 druga najveća vrijednost što nije istina tj. radi se upravo o maksimalnoj vrijednosti, a možda je i jednostavno vrijeme da se pokupim spat. :D
hendrix (napisa): | Shirohige (napisa): | ali onda sam se sjetio da mi nitko ne garantira da su prva dva člana različita |
Zasto je to bitno? Prvog spremis u D1, drugog u D2. Algoritam dalje radi potpuno neovisno o tome jesu li na D1 i D2 iste ili razlicite vrijednosti; ako je neki clan niza veci od onog u D1, potisnut ce ga na D2 i otici na D1.
A za ovo da niz ne mora biti duljine >0 - mislim, ili se nadam , da asistentu nije bila namjera traziti takve detalje, imho, za kolokvij na papiru - cak i nepotrebne. |
Ako su prva dva člana jednaka, a usput i oba maksimalne vrijednosti, a svi ostali manji onda nijedan član niza neće potisnuti D1 u D2 pa ćemo kao rezultat dobiti da je u D2 druga najveća vrijednost što nije istina tj. radi se upravo o maksimalnoj vrijednosti, a možda je i jednostavno vrijeme da se pokupim spat.
|
|
[Vrh] |
|
kobila krsto Forumaš(ica)
Pridružen/a: 02. 07. 2009. (16:55:08) Postovi: (6A)16
|
Postano: 8:29 pon, 18. 11. 2013 Naslov: |
|
|
[quote="Shirohige"][quote="hendrix"][quote="Shirohige"]ali onda sam se sjetio da mi nitko ne garantira da su prva dva člana različita[/quote]
Zasto je to bitno? Prvog spremis u D1, drugog u D2. Algoritam dalje radi potpuno neovisno o tome jesu li na D1 i D2 iste ili razlicite vrijednosti; ako je neki clan niza veci od onog u D1, potisnut ce ga na D2 i otici na D1.
A za ovo da niz ne mora biti duljine >0 - mislim, ili se nadam :D, da asistentu nije bila namjera traziti takve detalje, imho, za kolokvij na papiru - cak i nepotrebne.[/quote]
Ako su prva dva člana jednaka, a usput i oba maksimalne vrijednosti, a svi ostali manji onda nijedan član niza neće potisnuti D1 u D2 pa ćemo kao rezultat dobiti da je u D2 druga najveća vrijednost što nije istina tj. radi se upravo o maksimalnoj vrijednosti, a možda je i jednostavno vrijeme da se pokupim spat. :D[/quote]
vjerojatno bi se to riješilo da na početku tražiš 2 različite vrijednosti u polju ( kao inicijalni slučaj gdje su svi u polju cijeli brojevi ) i onda kreneš ispočetka po polju ( 2 petlje za najgori slučaj bi bile valjda sve zajedno ). ili, za slučaj da je resringirano na poz / neg brojeve da možeš inicijalni slučaj postaviti kao rubni broj i onda njega popravljati ( onda opet 1 petlja valjda ). bilo bi korisno čuti mišljenje asistenta ili ga jednostavno na kolokviju pitati pa se snalaziti onda :)
Shirohige (napisa): | hendrix (napisa): | Shirohige (napisa): | ali onda sam se sjetio da mi nitko ne garantira da su prva dva člana različita |
Zasto je to bitno? Prvog spremis u D1, drugog u D2. Algoritam dalje radi potpuno neovisno o tome jesu li na D1 i D2 iste ili razlicite vrijednosti; ako je neki clan niza veci od onog u D1, potisnut ce ga na D2 i otici na D1.
A za ovo da niz ne mora biti duljine >0 - mislim, ili se nadam , da asistentu nije bila namjera traziti takve detalje, imho, za kolokvij na papiru - cak i nepotrebne. |
Ako su prva dva člana jednaka, a usput i oba maksimalne vrijednosti, a svi ostali manji onda nijedan član niza neće potisnuti D1 u D2 pa ćemo kao rezultat dobiti da je u D2 druga najveća vrijednost što nije istina tj. radi se upravo o maksimalnoj vrijednosti, a možda je i jednostavno vrijeme da se pokupim spat. |
vjerojatno bi se to riješilo da na početku tražiš 2 različite vrijednosti u polju ( kao inicijalni slučaj gdje su svi u polju cijeli brojevi ) i onda kreneš ispočetka po polju ( 2 petlje za najgori slučaj bi bile valjda sve zajedno ). ili, za slučaj da je resringirano na poz / neg brojeve da možeš inicijalni slučaj postaviti kao rubni broj i onda njega popravljati ( onda opet 1 petlja valjda ). bilo bi korisno čuti mišljenje asistenta ili ga jednostavno na kolokviju pitati pa se snalaziti onda
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
Silenoz Forumaš(ica)
Pridružen/a: 15. 10. 2011. (18:45:11) Postovi: (4F)16
Spol:
|
|
[Vrh] |
|
Megy Poe Forumaš(ica)
Pridružen/a: 05. 11. 2009. (23:14:52) Postovi: (122)16
|
|
[Vrh] |
|
consuelo Forumaš(ica)
Pridružen/a: 07. 09. 2011. (14:04:48) Postovi: (1B)16
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
Megy Poe Forumaš(ica)
Pridružen/a: 05. 11. 2009. (23:14:52) Postovi: (122)16
|
|
[Vrh] |
|
hendrix Forumaš(ica)
Pridružen/a: 03. 09. 2012. (15:59:06) Postovi: (92)16
|
|
[Vrh] |
|
consuelo Forumaš(ica)
Pridružen/a: 07. 09. 2011. (14:04:48) Postovi: (1B)16
|
|
[Vrh] |
|
hendrix Forumaš(ica)
Pridružen/a: 03. 09. 2012. (15:59:06) Postovi: (92)16
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
Megy Poe Forumaš(ica)
Pridružen/a: 05. 11. 2009. (23:14:52) Postovi: (122)16
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
princeza_fiona Forumaš(ica)
Pridružen/a: 26. 01. 2011. (13:22:44) Postovi: (B)16
Spol:
|
|
[Vrh] |
|
|