06. FELADAT · FORRÁSKÓD
Önkiszolgáló kassza
Program.csAnimáció megnyitása →
namespace Feladat06_OnkiszolgaloKassza
{
internal class Program
{
static void Main(string[] args)
{
const int CIMLETEK_SZAMA = 12;
Console.WriteLine("=== Önkiszolgáló kassza ===");
Console.Write("A vásárlás összege (Ft): ");
int osszeg = int.Parse(Console.ReadLine());
int fizetendo = OtreKerekit(osszeg);
Console.WriteLine($"Kerekítés után fizetendő: {fizetendo} Ft");
Console.Write("Átadott készpénz (Ft): ");
int atadott = int.Parse(Console.ReadLine());
if (atadott < fizetendo)
{
Console.WriteLine($"Nem elegendő: még {fizetendo - atadott} Ft hiányzik.");
}
else
{
int visszajaro = atadott - fizetendo;
if (visszajaro == 0)
{
Console.WriteLine("Pontos fizetés, nincs visszajáró.");
}
else
{
Console.WriteLine($"Visszajáró: {visszajaro} Ft");
Console.WriteLine();
Console.WriteLine("A kiadott címletek:");
int maradek = visszajaro;
int osszesDarab = 0;
for (int i = 0; i < CIMLETEK_SZAMA; i++)
{
int cimlet = CimletErteke(i);
int darab = maradek / cimlet;
if (darab > 0)
{
Console.WriteLine($"{cimlet} Ft: {darab} db");
osszesDarab += darab;
}
maradek = maradek % cimlet;
}
Console.WriteLine($"Összesen {osszesDarab} darab pénzt adott ki a gép.");
}
}
}
// Magyarországon a készpénzes végösszeget 5 forintra kerekítjük.
// 1 és 2 Ft-ra végződve lefelé, 3 és 4 Ft-ra végződve felfelé.
static int OtreKerekit(int osszeg)
{
return (osszeg + 2) / 5 * 5;
}
// A forgalomban lévő címletek csökkenő sorrendben, sorszám szerint.
static int CimletErteke(int sorszam)
{
int ertek;
switch (sorszam)
{
case 0: ertek = 20000; break;
case 1: ertek = 10000; break;
case 2: ertek = 5000; break;
case 3: ertek = 2000; break;
case 4: ertek = 1000; break;
case 5: ertek = 500; break;
case 6: ertek = 200; break;
case 7: ertek = 100; break;
case 8: ertek = 50; break;
case 9: ertek = 20; break;
case 10: ertek = 10; break;
case 11: ertek = 5; break;
default: ertek = 1; break;
}
return ertek;
}
}
}