03. FELADAT · FORRÁSKÓD

Csomagautomata

Program.cs letöltése
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;
        }
    }
}