02. FELADAT · FORRÁSKÓD

Villanyszámla

Program.cs letöltése
namespace Feladat02_Villanyszamla
{
    internal class Program
    {
        static void Main(string[] args)
        {
            const double ALAPDIJ = 2500.0;   // havi rendelkezésre állási díj, Ft
            const double AR1 = 36.0;         // 0 - 100 kWh közötti rész egységára
            const double AR2 = 45.0;         // 100 - 250 kWh közötti rész egységára
            const double AR3 = 70.0;         // 250 kWh felett
            const double AFA_KULCS = 0.27;

            Console.WriteLine("=== Villanyszámla ===");

            Console.Write("A havi fogyasztás (kWh): ");
            double fogyasztas = double.Parse(Console.ReadLine());

            if (fogyasztas < 0)
            {
                Console.WriteLine("A fogyasztás nem lehet negatív.");
            }
            else
            {
                double energiadij = Energiadij(fogyasztas, AR1, AR2, AR3);
                double netto = ALAPDIJ + energiadij;
                double afa = netto * AFA_KULCS;
                double brutto = netto + afa;

                Console.WriteLine();
                Console.WriteLine($"Fogyasztói kategória: {Kategoria(fogyasztas)}");
                Console.WriteLine($"Energiadíj:                {energiadij:F2} Ft");
                Console.WriteLine($"Rendelkezésre állási díj:  {ALAPDIJ:F2} Ft");
                Console.WriteLine($"Nettó összeg:              {netto:F2} Ft");
                Console.WriteLine($"ÁFA (27%):                 {afa:F2} Ft");
                Console.WriteLine($"Fizetendő:                 {brutto:F2} Ft");

                if (fogyasztas > 0)
                {
                    // Valós osztás: a brutto double, ezért nem történik egész osztás.
                    double atlagar = brutto / fogyasztas;
                    Console.WriteLine($"Egy kWh átlagos bruttó ára: {atlagar:F2} Ft");
                }
                else
                {
                    Console.WriteLine("Nulla fogyasztás esetén nincs értelmezhető átlagár.");
                }
            }
        }

        // Sávos (progresszív) energiadíj: minden sávban csak az oda eső rész számít a sáv árával.
        static double Energiadij(double fogyasztas, double ar1, double ar2, double ar3)
        {
            double dij;

            if (fogyasztas <= 100)
            {
                dij = fogyasztas * ar1;
            }
            else if (fogyasztas <= 250)
            {
                dij = 100 * ar1 + (fogyasztas - 100) * ar2;
            }
            else
            {
                dij = 100 * ar1 + 150 * ar2 + (fogyasztas - 250) * ar3;
            }

            return dij;
        }

        static string Kategoria(double fogyasztas)
        {
            string nev;

            if (fogyasztas <= 100)
            {
                nev = "takarékos";
            }
            else if (fogyasztas <= 250)
            {
                nev = "átlagos";
            }
            else
            {
                nev = "nagyfogyasztó";
            }

            return nev;
        }
    }
}