Az önkiszolgáló kasszák hogy működnek? (Infó-matek, programozás⬇️)
Elhangzott az órán a kérdés, melyre választ nem kaptunk viszont nagyon érdekelne.
Az lenne pontosan a kérdés, hogy honnan tudja a gép a fizetés után, hogy mondjuk hány darab ötvenest vagy százast stb kell-e kiadnia. Mit használnak? (Nem arra gondolok, hogy hát kiszámolja a gép automatikusan és kiadja és hasonló egyszerű válaszok.)
Milyen programkóddal készülhettek? Hogy lehetne ezt leírni mondjuk Java-n, gondolok itt például if statement-ekre. Vagy miféle algoritmus?
Válaszokat/ötleteket előre is köszi:)
Egy lehetséges módszer az, hogy a visszajárót elkezded kipengetni a legnagyobb valutával, ameddig tudod, majd egyel kisebbre váltasz és ismétled, ameddig ki nem adtad a teljes összeget.
Nem tudom érthető-e? Tehát pl. 2250 Ft. a visszajárót, amit ki kell adnod. A legnagyobb valuta ehhez az 1000 Ft.-os, tehát első lépésben leszámolsz 2 db. ezrest, majd váltasz a 200 Ft.-osokra, végül váltasz az 50 Ft.-osokra és ezzel ki is van fizetve az összeg.
Az 1-es válaszolóval nem értek egyet. A visszaadási sorrend sokkal praktikusabb, ha a kisebb érméktől haladunk a nagyobb felé. Az algoritmus így lesz a legegyszerűbb, mert a gépnek egyébként sem azt kell tudnia (és nem is tudja) hogy mennyit kell visszaadnia, hanem azt, hogy a bedobott összeget a mérlegelv szerint kiegyenlítse.
Másrészt ha a kérdező az algoritmusra kíváncsi, akkor tekintsen utána annak is, hogy egy ilyen szerkezetet hogyan lehet tisztán mechanikusan felépíteni.
Mert ez gyakorlatilag egy összetett mechanizmus, az egésznek az alapja, hogy egy vezérműtengelyen vezérlőtárcsák vannak, és az elfordulás hatására az adott érmékből megfelelő darabszámút dob vissza a gép.
Aztán persze könnyen át lehet gondolni, hogy ezt az egészet mondjuk relékkel hogyan lehet összerakni.
Viszont a reléket a modern elektronikában most már más (többnyire félvezető, ill. teljesítmény-elektronikai elemekkel) váltják ki, amit már egy számítógépes program irányít.
Hogy most ez hogyan van implementálva programozási szinten, az teljesen lényegtelen, mert az eredeti mechanikai algoritmus lesz megvalósítva.
"A visszaadási sorrend sokkal praktikusabb, ha a kisebb érméktől haladunk a nagyobb felé."
Ezt gondold át mégegyszer. A te algoritmusod az említett 2250 Ft. visszajárót 450 db. 5 Forintossal próbálná kifizetni. De ha csak az elvet nézzük, akkor igen, ez is egy megoldás. :)
Érdekes egyébként, de logikusnak hangzik, hogy a legmagasabbról indulunk visszafelé. Kicsit hasonlít a binary-ra, ahogy elveszi az értéket ami szükséges, és pótolgatja kifele a visszajárót, amíg a gép el nem éri a kívánt kiadandó összeget. És a gép valahogy így dolgozná fel; 10010001000 (csak példa), bár nem is lényeges ez.
Nincs ezzel kapcsolatban valahol egy hivatalos dokumentum amit a gyártó bocsájtott ki ezekről a gépekről? Csak mert sehol nem találok ezekkel kapcsolatban infókat.
Mármint binary to decimal-ra gondoltam. (Bocsi, nem tudom mi magyarul.)
Csak éppen 0,2,4,8,16,32... helyére az adott ország által használt bankjegyek lennének sorrendben a legnagyobbtól a legkisebbig.
"Nincs ezzel kapcsolatban valahol egy hivatalos dokumentum amit a gyártó bocsájtott ki ezekről a gépekről? Csak mert sehol nem találok ezekkel kapcsolatban infókat."
Nem hiszem, hogy találni fogsz, de szerintem a tanárod sem azt várja el, hogy a valóságban is használt algoritmust adjátok be neki. :) Igazából ahány gyártó, annyiféle megvalósítás, 100%, hogy nem ugyanazt a kódot használják az összes gépen.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!