Zamiana nominału... Jak napisać program który predstawi wszystke mozliwosci zamiany jednego nominału na banknoty i bilon. naprzykład podaje 85 złi program podaje wszystkie mozliwe kombinacje... 85=10+10+20+5+5+20+10+2+2+1 85=10+10+10+10+10+10+10+10+5 85=50+20+10+1+1+1+1+1i tak dalej.........Dzięki
02-01-2004 21:13
478762
losmac "profesorek"
Typ: neutral Postów: 758 Zarejestrowany: May 2003
ja to widzę tak Słuchaj, myślę, że to nie jest takie proste.Po pierwsze liczba możliwych kombinacji jest ..., a może i większa dopóki nie będziesz znał ilości poszczególnych banknotów i nominałów.Na przykład:W swoim bankomacie masz:5 razy 10 zł3 razy 50 zł2 razy 5 złTeraz liczba możliwych kombinacji zmniejsza się, bo wiesz, że poczynając od najwiekszego nominału, wykorzystasz:1 raz 50 zł,3 razy 10 zł i1 raz 5 zł.Problem jest ciekawy i warty rozwiązania, ale trzeba znać jego zastosowanie. Czy chodzi Ci o wymyślenie idealnego algorytmu, czy też chcesz zrobić coś w rodzaju bankomatu, bo to całkowicie zmienia sposób myślenia - znalezienia rozwiązania? _____________________________________________POSTULATY STARUSZKA: 1) Ludzie, dbajcie o polszczyznę!!! 2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!! Powodzenia Maciej Łoś
02-01-2004 23:09
Goły
Typ: neutral Postów: 8 Zarejestrowany: Dec 2003
Nowa myśl. Moze zrobic to na zasadzie losowania banknotow i bilonu tak ze suma ich daje odpowiednio za kazdym raze taki sam nominal bez powtorzen, tylko czy jest to mozliwe?
03-01-2004 01:19
478762
losmac "profesorek"
Typ: neutral Postów: 758 Zarejestrowany: May 2003
rozwiązanie... Nie wiem od czego zacząć, więc zacznę od początku.Nie mogłem jakoś sobie uświadomić jak to zrobić, więc zacząłem kombinować jak to się dzieje w bankomacie:Przecież każdy bankomat ma określoną ilość gotówki!Więc poczyniłem pewne założenia:1) Mam jakąś ilość nominałów w swoim bankomacie (Ty, oczywiście możesz je losować)2) Wszystkie moje nominały są poukładane w porządku rosnącym, bo łatwiej jest dokonywać wypłaty zaczynając od największego nominału. Gdybym to robił odwrotnie (od najmniejszego) to nazbierałbym drobniaków i nagle pojawia się 20 zł, a klient chciał wypłacić 35 z takich nominałów: 1, 1, 5, 10, 20, 50. Wypłaciłby? Oczywiście, że nie, bo uzbierałbym mu (jako bankomat) dokładnie 17 zł i dalej co... NIC! .... zimna!ROZWIĄZANIENajpierw muszę ustalić ile mam kasy w bankomacie (NIE SUMA kwot z nominałów, a ilość nominałów).Ta wartość to ilość pętli, które powinien wykonać program, by sprawdzić wszystkie możliwe kombinacje.By wypłacić 35 zł z w/w nominałów:Liczba pętli = licbie nominałów; tj.: 6 PĘTLA 1Za pierwszym razem sprawdzam wszystkie nominały w bankomacie:1, 1, 5, 10, 20, 50ale robię to w porządku od największego nominału do najmniejszego, więc 50 - odrzucam do worka, by sprawdzić kolejnym razem20 - odliczam do wypłaty (mniej niż 35)10 - odliczam do wypłaty (mniej niż 35)5 - odliczam do wypłaty (równo 35)1 - odrzucam do worka, by sprawdzić kolejnym razem1 - odrzucam do worka, by sprawdzić kolejnym razemPo pierwszej wypłacie pozostało w bankomacie:50, 1, 1PĘTLA 2, 3,...650 - odrzucam do worka, by sprawdzić kolejnym razem1 - odrzucam do worka, by sprawdzić kolejnym razem1 - odrzucam do worka, by sprawdzić kolejnym razemWyczerpałem wszystkie możliwości - MOŻLIWA JEST TYLKO JEDNA WYPŁATA 35 zł z podanych nominałów!Utworzyłem plik w Excel'u z przykładowym kodem... Jeśli chcesz wyślę Ci go na mail'a!POZOSTAŁYM mówię, że umieszczę go na własnej stronce do ściągnięcia, a tu dodam link! [Post edytowany dnia 04-01-2004 00:19 przez losmac]_____________________________________________POSTULATY STARUSZKA: 1) Ludzie, dbajcie o polszczyznę!!! 2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!! Powodzenia Maciej Łoś
04-01-2004 00:16
Goły
Typ: neutral Postów: 8 Zarejestrowany: Dec 2003
Dzięki... Jak mozesz to prosze prześlij mnie to na mail'a. Mam jeszcze problem jak zrobić dokońca tą petle, znaczy jak odliczac pasujace nominały z gromadki a następnie żeby te odliczone po koleji w pętlach nominały wyswietlić?
04-01-2004 02:32
478762
deywid
Typ: neutral Postów: 66 Zarejestrowany: Jan 2004
nie wiem nawet czy to sie komuś przyda .ale temat mnie zaciekawił,zrobiłem coś takiego ze z tym banknotów(bilonu)co podałes(100,50,20,10,5,2,1) jest przedstawiana suma z banknotów(bilonu) o największej wartość danej kwoty np. 124 zł czyli 1 x 100 ,1x 20 ,2 x2ale mowie zrobilem to tylko z wlasnej ciekawosci..============================Private Sub Command1_Click()Dim zmienna(1 To 7) As Integerzmienna(1) = 100zmienna(2) = 50zmienna(3) = 20zmienna(4) = 10zmienna(5) = 5zmienna(6) = 2zmienna(7) = 1Dim ilezmienna(1 To 7) As Integerliczba = Text1.TextFor i = 1 To 7ilezmienna(i) = liczba \ zmienna(i)liczba = liczba - ilezmienna(i) * zmienna(i)Next iLabel1.Caption = Text1.Text & vbCrLf & "Ilość : banknot(moneta)"For ia = 1 To 7Label1.Caption = Label1.Caption & vbCrLf & " " & ilezmienna(ia) & ": " & zmienna(ia)Next iaEnd Sub==========================pozdro
25-01-2004 18:48
5625009
Sen
Typ: neutral Postów: 20 Zarejestrowany: Jan 2004
jestem ciekawy na co ci rozmienianie kasy na drobne ale co tam, masz tu gotowy programik:Dim liczba As LongDim ile200, ile100, ile50, ile20, ile10, ile5, ile2, ile1 As LongDim l200, l100, l50, l20, l10, l5, l2, l1 As LongDim a1, a2, a3, a4, a5, a6, a7 As LongDim linia As StringPrivate Sub Command1_Click() Text2 = "" liczba = Val(Text1) ile200 = Int(liczba / 200) l200 = liczba For a1 = 0 To ile200 l100 = l200 - a1 * 200 ile100 = Int(l100 / 100) For a2 = 0 To ile100 l50 = l100 - a2 * 100 ile50 = Int(l50 / 50) For a3 = 0 To ile50 l20 = l50 - a3 * 50 ile20 = Int(l20 / 20) For a4 = 0 To ile20 l10 = l20 - a4 * 20 ile10 = Int(l10 / 10) For a5 = 0 To ile10 l5 = l10 - a5 * 10 ile5 = Int(l5 / 5) For a6 = 0 To ile5 l2 = l5 - a6 * 5 ile2 = Int(l2 / 2) For a7 = 0 To ile2 l1 = l2 - a7 * 2 Text2 = Text2 + Str(a1) + "x200 " + Str(a2) + "x100 " + Str(a3) + "x50 " + Str(a4) + "x20 " + Str(a5) + "x10 " + Str(a6) + "x5 " + Str(a7) + "x2 " + Str(l1) + "x1 " + Chr(13) + Chr(10) Next Next Next Next Next Next NextEnd SubPrivate Sub Form_Load() Text1 = ""End Subpotrzebne sa 2 textboxy i commandbutton, drugi textbox ze scrollbarem, bo lista bedzie długa jezeli wpiszesz cokolwiek wiekszego od 20A tak pozatym to nie wpisuj liczb wiekszych od 100 bo to jest zabójstwo dla windy, chyba ze masz zajebistego kompa.Czy o to dokładnie ci chodziło?
25-01-2004 21:24
Goły
Typ: neutral Postów: 8 Zarejestrowany: Dec 2003
To jest to... Dzięki wielkie,o to właśnie chodziło. Pozdrawiam [Post edytowany dnia 02-02-2004 20:26 przez Goły]
02-02-2004 20:20
478762
Wszystkich odpowiedzi: 7 :: Maxymalnie na stronę: 20