03. FELADAT · FORRÁSKÓD
Csomagautomata
Program.csAnimáció megnyitása →
namespace Feladat03_Csomagautomata
{
internal class Program
{
static void Main(string[] args)
{
const double MAX_TOMEG = 20.0; // kg, ennél nehezebb csomagot nem fogad az automata
const double SULYHATAR = 5.0; // kg, efölött van súlyfelár
const double KILO_FELAR = 250.0; // Ft / kg a súlyhatár felett
Console.WriteLine("=== Csomagautomata – feladási kalkulátor ===");
Console.Write("A csomag hossza (cm): ");
double hossz = double.Parse(Console.ReadLine());
Console.Write("A csomag szélessége (cm): ");
double szelesseg = double.Parse(Console.ReadLine());
Console.Write("A csomag magassága (cm): ");
double magassag = double.Parse(Console.ReadLine());
Console.Write("A csomag tömege (kg): ");
double tomeg = double.Parse(Console.ReadLine());
double leghosszabbOldal = Legnagyobb(hossz, szelesseg, magassag);
double oldalOsszeg = hossz + szelesseg + magassag;
double terfogatsuly = hossz * szelesseg * magassag / 5000.0;
// Az elszámolt súly a tényleges tömeg és a térfogatsúly közül a nagyobbik.
double elszamoltSuly = tomeg;
if (terfogatsuly > elszamoltSuly)
{
elszamoltSuly = terfogatsuly;
}
Console.WriteLine();
Console.WriteLine($"Leghosszabb oldal: {leghosszabbOldal:F1} cm");
Console.WriteLine($"Oldalak összege: {oldalOsszeg:F1} cm");
Console.WriteLine($"Térfogatsúly: {terfogatsuly:F2} kg");
Console.WriteLine($"Elszámolt súly: {elszamoltSuly:F2} kg");
string meret = Dobozmeret(leghosszabbOldal, oldalOsszeg);
if (elszamoltSuly > MAX_TOMEG)
{
Console.WriteLine($"A csomag nem adható fel: az elszámolt súly meghaladja a {MAX_TOMEG} kg-ot.");
}
else if (meret == "-")
{
Console.WriteLine("A csomag nem adható fel: mérete egyik rekeszbe sem fér be.");
}
else
{
double alapdij = Alapdij(meret);
double felar = 0;
if (elszamoltSuly > SULYHATAR)
{
felar = (elszamoltSuly - SULYHATAR) * KILO_FELAR;
}
double fizetendo = alapdij + felar;
Console.WriteLine($"Rekeszméret: {meret}");
Console.WriteLine($"Alapdíj: {alapdij:F2} Ft");
Console.WriteLine($"Súlyfelár: {felar:F2} Ft");
Console.WriteLine($"Fizetendő: {fizetendo:F2} Ft");
}
}
static double Legnagyobb(double a, double b, double c)
{
double legnagyobb = a;
if (b > legnagyobb)
{
legnagyobb = b;
}
if (c > legnagyobb)
{
legnagyobb = c;
}
return legnagyobb;
}
static string Dobozmeret(double leghosszabbOldal, double oldalOsszeg)
{
string meret;
if (leghosszabbOldal <= 25 && oldalOsszeg <= 50)
{
meret = "S";
}
else if (leghosszabbOldal <= 40 && oldalOsszeg <= 80)
{
meret = "M";
}
else if (leghosszabbOldal <= 60 && oldalOsszeg <= 120)
{
meret = "L";
}
else
{
meret = "-";
}
return meret;
}
static double Alapdij(string meret)
{
double dij;
if (meret == "S")
{
dij = 1290.0;
}
else if (meret == "M")
{
dij = 1690.0;
}
else
{
dij = 2290.0;
}
return dij;
}
}
}