09. FELADAT · FORRÁSKÓD

Megtakarítási terv

Program.cs letöltése
namespace Feladat09_MegtakaritasiTerv
{
    internal class Program
    {
        static void Main(string[] args)
        {
            const int HONAPOK = 120;   // 10 év

            Console.WriteLine("=== Megtakarítási terv – 10 éves előrejelzés ===");

            Console.Write("Havi befizetés (Ft): ");
            double haviBefizetes = double.Parse(Console.ReadLine());
            Console.Write("Éves kamat (%): ");
            double evesKamat = double.Parse(Console.ReadLine());
            Console.Write("Célösszeg (Ft): ");
            double celosszeg = double.Parse(Console.ReadLine());

            double haviKamatlab = HaviKamatlab(evesKamat);
            double egyenleg = 0;
            bool elerte = false;
            int celHonap = 0;

            Console.WriteLine();
            Console.WriteLine("Év vége szerinti egyenleg:");

            for (int honap = 1; honap <= HONAPOK; honap++)
            {
                egyenleg = UjEgyenleg(egyenleg, haviKamatlab, haviBefizetes);

                if (!elerte && egyenleg >= celosszeg)
                {
                    elerte = true;
                    celHonap = honap;
                }

                if (honap % 12 == 0)
                {
                    Console.WriteLine($"{honap / 12}. év: {egyenleg:F2} Ft");
                }
            }

            double befizetett = haviBefizetes * HONAPOK;
            double kamatnyereseg = egyenleg - befizetett;

            Console.WriteLine();
            Console.WriteLine("--- Összegzés ---");
            Console.WriteLine($"Összesen befizetett összeg: {befizetett:F2} Ft");
            Console.WriteLine($"Záró egyenleg:              {egyenleg:F2} Ft");
            Console.WriteLine($"Ebből kamat:                {kamatnyereseg:F2} Ft");

            if (elerte)
            {
                int ev = celHonap / 12;
                int honap = celHonap % 12;
                Console.WriteLine($"A célösszeget a(z) {celHonap}. hónapban éred el, vagyis {ev} év {honap} hónap alatt.");
            }
            else
            {
                double hianyzik = celosszeg - egyenleg;
                Console.WriteLine($"A célösszeget 10 év alatt nem éred el, {hianyzik:F2} Ft hiányzik hozzá.");
            }
        }

        // Az éves kamatláb tizenketted része, tizedes törtként (6% -> 0,005).
        static double HaviKamatlab(double evesKamat)
        {
            return evesKamat / 12.0 / 100.0;
        }

        // Egy hónap lépése: előbb a meglévő egyenlegre jóváírjuk a kamatot,
        // és csak utána adjuk hozzá az aktuális havi befizetést.
        static double UjEgyenleg(double egyenleg, double haviKamatlab, double haviBefizetes)
        {
            return egyenleg + egyenleg * haviKamatlab + haviBefizetes;
        }
    }
}