Python - zadatak - pomoć

poruka: 5
|
čitano: 2.179
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
10 godina
neaktivan
offline
Python - zadatak - pomoć

Pozdrav ljudi, 

evo ovako, trebao bih pomoć oko zadatka u Pythonu. Dakle moram unijeti neku random cijenu, tj. random broj i da mi taj ispiše u najmanjem mogućem broju novčanica, pri tome da mi ispiše samo novčanice kojim plaćamo; recimo da je 990 = 1 x 500, 2 x 200, 1 x 50 i 2 x 20.

 

Unaprijed hvala.

 
0 0 hvala 0
16 godina
neaktivan
offline
Python - zadatak - pomoć

Podijeliš broj prvo sa najvećom novčanicom, ako je broj veći od 1 pišeš cijeli broj i ostatak (modulo) pribrajaš onome što ti je ostalo,tada djeliš ostatak sa sljedećom najvećom novčanicom dok ti zbroj tih novčanica ne bude jednak početnom broju (ili dok ne dođeš do 1 lipe).

 

Znači recimo da imamo broj 1200, prvo broj podjelimo sa 1000 to nam daje 1 tisučicu, modulo 1200 i 1000 nam daje 200 (znači recimo da je preostali_novac=200), što je ostatak.

200 djelimo sa najvećom sljedećom novčanicom a to je 500, dobijamo broj manji od 1 pa ostavljamo ostatak 200 (znači preostali_novac=200),

dalje djelimo 200 sa 200 i dobijamo 1 niže od toga nema pa je riješenje da imamo 1 x 1000 i 1 x 200.

--------------------------------------------------------------------------------------------
Poruka je uređivana zadnji put ned 9.11.2014 20:42 (zerocool12).
 
0 0 hvala 1
12 godina
neaktivan
offline
Re: Python - zadatak - pomoć

iznos = int(input('Unesi iznos:'))

for apoen in [1000, 500, 200, 100, 50, 20, 10]:
    n, iznos = divmod(iznos, apoen)
    if n:
        print(n, 'x', apoen)

16 godina
offline
Re: Python - zadatak - pomoć
Bobobo-bo Bo-bobo kaže...

iznos = int(input('Unesi iznos:'))

for apoen in [1000, 500, 200, 100, 50, 20, 10]:
    n, iznos = divmod(iznos, apoen)
    if n:
        print(n, 'x', apoen)

-šteta je dati cod.. bolje da nauči, pa čak crtajući na papiru, samo da nije copypaste..

 

upgrade ver. 2.0 poduplati gornji fornext, umjesto apoen uvesti kune (prošireno 5,2,1), lipe.. koja se izvrši ako je ostatak >0, do 2 dec.

za ver. 3.0 ide ispis slovima.. :)

C64/TurboModul-OpenSourceProject.org.cn.部分作品为网上收集整理,供开源爱好者学习使用
12 godina
neaktivan
offline
Re: Python - zadatak - pomoć

Upgrade 2.0

 

from decimal import Decimal

iznos = Decimal(input('Unesi iznos:'))

for apoen in (Decimal(str(x)) for x in [1000, 500, 200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01]):
    n, iznos = divmod(iznos, apoen)
    if n:
        print(n, 'x', apoen)

 

Isti algoritam kao i u prethodnom slučaju, samo zbog točnosti umjesto floating point tipa treba koristiti Decimal.

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice