Napisz program poszukujący rozwiązania problemu wydawania reszty, gdy masz ograniczoną liczbę każdego z nominałów. Zwróć uwagę, że nie każdą resztę uda się wydać (program powinien wtedy wypisać odpowiedni komunikat). (Kod w pythonie, daje naj)

Odpowiedź :

Odpowiedź:

reszta = []

sztuk = []

wydanaReszta = []

CzyDaSieWydac = True

x = 1

for i in range(5):

   reszta.append(50000/x)

   reszta.append(20000/x)

   reszta.append(10000/x)

   for i in range(3):

       sztuk.append(5)

   x*=10

r = float(input("Podaj resztę: "))

r*=100

i=0

while r>0:

   if r >= reszta[i] and sztuk[i]>0:

       r -= reszta[i]

       sztuk[i] -= 1

       wydanaReszta.append(reszta[i]/100)

   else:

       if i < len(reszta)-1:

           i += 1

   if sztuk[len(sztuk)-1] == 0 and r > 0:

       CzyDaSieWydac = False

       break;

if CzyDaSieWydac:

   print('Wydana reszta to: ')

   for i in range(len(wydanaReszta)):

           print(wydanaReszta[i], end=", ")

else:

   print("Nie można wydać reszty!")

Wyjaśnienie:

program wydaje resztę mając po 5 sztuk na każdy nominał od 500zł od 1 gorsza