[ Stijak @ 06.10.2011. 00:54 ] @
Sam sam otkrio grešku - ali ostaviću temu ako neki strogi početnik napravi sličnu grešku Naime - ovo if oko koga mi nije bilo jasno evoluira već izmjenjenu vriijednost moneyNeeded - tj. ne istu onu vrijednost koja je bila kod evaluacije kod prvog if... Rešavao sam neki zadačić - http://www.home.hs-karlsruhe.d...n/en/flowcontrol.html#roulette I onda sam prvo uradio nešto slično njihovom rešenju (ovo sa moneyNeededOld promjenljivom) i onda shvatio da ako uzmem u obzir da sam do nekog kruga round već zaradio round-1 evro i da i njih mogu trošiti zajedno sa početnim ulogom - napravio sam i malo bolji račun (sa moneyNeeded promjenljivom)... Međutim - kada sam program pokretao htio sam da malo sredim i da mi ne prijavljuje dva puta istu vrednost - kada odgovara i po starom i po novom - jer sam shvatio da svaka vrijednost koja odgovara po novom računu odgovara i po starom - pa sam ubacio jedno if na println kod starog računa u kojem kao logičku vrijednost imam negaciju nejednakosti iz novog računa - ali i dalje pomenuta linija svaki put izađe na ekran... Code: public class Rulet { /** * @param args the command line arguments */ public static void main(String[] args) { long moneyNeeded = 0; long moneyNeededOld = 0; int numberRounds = 0; int numberRoundsOld = 0; for (int round=1;round<10000;round++) { long wager=1; while (Math.random()<0.5) { wager=2*wager; } if (wager>moneyNeeded+round-1) /prvo if { moneyNeeded=wager; System.out.println("U krugu broj "+round+" je potrebno "+moneyNeeded); numberRounds++; } if (wager>moneyNeededOld){ moneyNeededOld=wager; if (!(wager>moneyNeeded+round-1)) /ovo je negacija prvog if - pa se ipak aktivira svaki put kad i prvi if { System.out.println("Po starom u krugu broj "+round+" je potrebno "+wager); } numberRoundsOld++; } } System.out.println("Potrebno je para "+moneyNeeded+", i desice se krugova "+numberRounds); System.out.println("Po starom potrebno je para "+moneyNeededOld+", i desice se krugova "+numberRoundsOld); } } Rezultat je (zavisi od random funkcije - pa ćete dobiti drugačije brojke) Code: U krugu broj 1 je potrebno 2 Po starom u krugu broj 1 je potrebno 2 /zašto se ovo aktiviralo??? Po starom u krugu broj 9 je potrebno 8 U krugu broj 11 je potrebno 1024 Po starom u krugu broj 11 je potrebno 1024 /zašto se ovo aktiviralo??? Po starom u krugu broj 2048 je potrebno 2048 Po starom u krugu broj 6556 je potrebno 4096 Potrebno je para 1024, i desice se krugova 2 Po starom potrebno je para 4096, i desice se krugova 5 |