ugrás a tartalomhoz

Script "pénz" átváltásra, hogyan?

Moszajszli · 2011. Már. 18. (P), 20.13
Üdv Mindenki!

Arra szeretnék választ, vagy rávezetést kérni tőletek, hogy hogyan tudnám megoldani azt, hogy 100 bronzot 1 ezüstként, és 100 ezüstöt egy aranyként jelenítsek meg.

Egy adatbázisban vannak letárolva, hogy kinek mennyi bronzza van, az adatbázisból kiolvasva ugye csak a bronzok számát kapom, pl: 200000 bronz.

Hogy lehetne ezt a lekérdezést úgy kiíratni, hogy ez a 200000 bronz 20 aranyként íródjon ki, vagy ha 100-999 bronz van akkor 1 ezüsttől 99ezüstig és onnan tovább aranyként jelenítse meg?

az átváltásokat igy sorolnám be:
1-99ig bronz
100bronz 1 ezüst, tehát 1ezüsttől 99ig még ezüst
100ezüst már 1 arany, tehát 1 aranytól már csak arany íródik ki
és előfordulhatna úgy, hogy pl 203211bronz akkor 20arany 32ezüst 11bronz

Próbáltam mások számára is érthetővé kovácsolni a kérdésemet...kérem aki tudja, hogyan lehetne ezt kivitelezni, az irja meg.

Köszönettel, Zoltán
 
1

Osztás és maradékképzés

vbence · 2011. Már. 18. (P), 20.53
Az osztás és maradékképzés segítségével. A lenti példában $lsbf indexei:
0: bronz, 1: ezüst, 2: arany - bár a bronz helyett a "rézpénz" autentikusabb lenne :)

$lsbf = array ();

while ($num > 0) {
    array_push ($lsbf, $num % 100);
    $num = floor ($num / 100);
}
3

Köszönöm

Moszajszli · 2011. Már. 21. (H), 21.38
Köszönöm szépen Bence!

Lenne még egy kérdésem, ugyanígy a játékban eltöltött időt lekérdezve az adatbázisból csak a másodperceket kapom, hogy irathatnám ki Xnap Xóra Xperc Xmásodperc módján?
4

100 helyett 60-nal meg

Tyrael · 2011. Már. 21. (H), 22.08
100 helyett 60-nal meg 24-gyel kell osztani meg modulot szamolni

Tyrael
5

Ugyanaz

Poetro · 2011. Már. 21. (H), 22.09
A probléma ugyanaz, csak mások a mértékegységek. 1 nap 86.400 másodperc, 1 óra 3600, 1 perc pedig 60.
6

A fenti logikával

vbence · 2011. Már. 21. (H), 23.29
A fenti logikával (csak itt a helyiértékek változnak ezért egy tömbbe előre rögzítve vannak):

$helyiertekek = array (24, 60, 60);
$lsbf = array ();
  
while ($hertek = array_pop ($helyiertekek)) {
    array_push ($lsbf, $num % $hertek);
    $num = floor ($num / $hertek);
}
array_push ($lsbf, $num);
A ciklus annyiszor fog lefutni ahány elem van a $helyiertekek tömbben (vagyis addig amíg maradt benne elem). A ciklus végén a $num még tartalmazni fogja a napok számát, ezt a végén dobjuk a $lsbf tömbünk végére.

Így az indexek jelentése: 0: mp, 1: perc, 2: óra, 3: nap

Ha heteket is meg szeretnél jelenteni, csak szúrj be egy 7-est a $helyiertekek tömb elejére, és az eredmény a $lsbf 4. indexén lesz.
2

ha meg tudtad volna

Tyrael · 2011. Már. 19. (Szo), 14.42
ha meg tudtad volna fogalmazni a feladatodat ugy hogy valojaban milyen muveleteket csinalsz te, amikor a 23241 bronzodat bevaltod ezustbe meg aranyba, akkor megkaptad volna azt az algoritmust, amit utana mar trivialisan le is tudtal volna programozni.
http://www.szit.hu/wiki/doku.php?id=programoz%C3%A1s_elm%C3%A9let_anyag#algoritmus
http://infoblog.ogp.hu/category/programozas/algoritmizalas/

Tyrael