[ ||NeX|| @ 23.11.2004. 01:41 ] @
Sorry, ako ima već, fakat mi hitno treba.
Naime trebam skontati algoritmus, za slijedeci zadatak.
Imam tri posude, u jednoj velikoj je mnogo tekučine, ali neodređeno puno, u drugu posudu mogu stati 5l, a u treću samo 3l. Treba prelijevanjem dobiti da su ove manje stoji po 1l. Čaše se mogu prazniti po volji.
Ako neko zna, molim vas pomozite, biti ću duboko zahvalan!
[ Alef @ 23.11.2004. 08:21 ] @
Napuniš posudu od 3 litre i prebaciš to u posudu od 5 litara. Ponovo napuniš posudu od 3 litre i dopuniš posudu od 5 litara (još 2 litre). U posudi od 3 litre će ti ostati tačno jedna litra.
[ ||NeX|| @ 23.11.2004. 19:07 ] @
Pa da je tako jednostavno nebi sigurno postavljao na forum. Očigledno nisi skotao.
Imaš tri posude:
Posuda A:neodređeno puno litara je u njoj
Posuda B: ona je max. napunjena trenutno sa 5L
Posuda C: o ona je trenutno max. napunjena tj. sa 3L

Treba preljivanjem dobiti da u A=0L, B=1L i C=1L !!!
[ Alef @ 24.11.2004. 00:29 ] @
Code:

     Radnja:                                Stanje:

 0)                                  A = ?   B = 0   C = 0
 1) A -> B (5l)                      A = ?   B = 5   C = 0
 2) B -> C (3l)                      A = ?   B = 2   C = 3   
 3) Prospem sve iz C                 A = ?   B = 2   C = 0
 4) B -> C (Onaj ostatak od 2l)      A = ?   B = 0   C = 2
 5) A -> B (5l)                      A = ?   B = 5   C = 2
 6) Prospem sve iz A                 A = 0   B = 5   C = 2
 7) B -> A (5l)                      A = 5   B = 0   C = 2
 8) C -> A (2l)                      A = 7   B = 0   C = 0
 9) A -> C (3l)                      A = 4   B = 0   C = 3
10) C -> B (3l)                      A = 4   B = 3   C = 0
11) A -> C (3l)                      A = 1   B = 3   C = 3
12) C -> B (2l)                      A = 1   B = 5   C = 1
13) Prospem sve iz B                 A = 1   B = 0   C = 1
14) A -> B (1l)                      A = 0   B = 1   C = 1
[ ||NeX|| @ 25.11.2004. 01:37 ] @
Hvala ti care! Veliko hvala!
[ ||NeX|| @ 26.11.2004. 14:23 ] @
Evo kazu mi da ima 18 rijesenja pa trebamo od svih tih napraviti algoritmus.
Ako neko ima volje, a evo i ja kontam kakvih jos ima, pa da napisem veceras.
Hvala unaprijed.
[ Bojan Basic @ 26.11.2004. 16:27 ] @
Ne znam koliko će ovo pomoći, ali slučajno sam naleteo na jedan svoj program iz ko zna kog vremena kad sam "programirao" u QBASIC-u koji traži slična presipanja. Evo ovde programa pa probajte:
Code:
CLS
INPUT "Unesite V, x, y:", V, x, y
s = 1
pro = 0
pre = 0
PRINT "Prvi nacin:"
A = 0
B = y
PRINT "("; A; ","; B; ")"
Vpr = A + B
WHILE (Vpr <> V)
   IF B > 0 THEN IF B <= x AND A + B < x THEN A = A + B: B = 0: pre = pre + 1: Vpr = A + B: PRINT "("; A; ","; B; ")" ELSE B = B - (x - A): A = x: pre = pre + 1: Vpr = A + B: PRINT "("; A; ","; B; ")"
   IF B = 0 THEN B = y: s = s + 1: Vpr = A + B: PRINT "("; A; ","; B; ")"
   IF A = x THEN A = 0: pro = pro + 1: Vpr = A + B: PRINT "("; A; ","; B; ")"
WEND
zbir1 = pro + pre + s
PRINT zbir1; "poteza."
10 A$ = INKEY$: IF A$ = "" THEN 10
PRINT
PRINT
PRINT
PRINT "Drugi nacin:"
s = 1
pro = 0
pre = 0
A = x
B = 0
Vpr = x
PRINT "("; A; ","; B; ")"
WHILE (Vpr <> V)
   IF A > 0 THEN IF A + B <= y THEN B = A + B: A = 0: pre = pre + 1: Vpr = A + B: PRINT "("; A; ","; B; ")"
   IF A > 0 AND NOT Vpr = V THEN IF A + B > y THEN A = A - (y - B): B = y: pre = pre + 1: Vpr = A + B: PRINT "("; A; ","; B; ")"
   IF A = 0 AND NOT Vpr = V THEN A = x: s = s + 1: Vpr = A + B: PRINT "("; A; ","; B; ")"
   IF B = y AND NOT Vpr = V THEN B = 0: pro = pro + 1: Vpr = A + B: PRINT "("; A; ","; B; ")"
WEND
zbir2 = pro + pre + s
PRINT zbir2; "poteza."
[ ||NeX|| @ 03.12.2004. 13:51 ] @
Hvala ti, ali mozes li malo pojasniti o cemu se tacno radi. Jer nemam pojma o Q Basicu, a nekom svojom (i tudjom) logikom nemozemo skontati STA TI JE Vpr, a sta V. Pls.