C# :: Aufgabe #347 :: Lösung #1

4 Lösungen Lösungen öffentlich
#347

Berechnung Kfz-Steuer (Deutschland 2021)

Anfänger - C# von JKooP - 15.12.2020 um 19:35 Uhr
Schreibe eine Methode/Funktion, mit der es möglich ist, die Kfz- Steuer sowohl für Benzin-, als auch Dieselfahrzeuge
ab dem 01.01.2021 für Deutschland zu berechnen.

Übergeben werden sollen die Parameter: Otto- o. Dieselfahrzeug, Hubraum in ccm, CO2 in g.

Als Ergebnis soll die Gesamtsteuer in Euro fürs Jahr ausgegeben werden.

Eine ausführliche Berechnungshilfe findet man hier!

Viel Spaß
#1
vote_ok
von dany_mue (240 Punkte) - 05.02.2021 um 21:55 Uhr
Quellcode ausblenden C#-Code
// Ergebnisse auf der Seite https://www.smart-rechner.de/kfzsteuer/rechner.php überprüft

using System;

namespace TJP347_KFZ_Steuer
{
    class Program
    {
        /// <summary>
        /// Konstanten
        /// </summary>
        private static readonly double EURHUBRAUMBENZIN = 2.00; // Hubraumfaktor Benzinfahrzeuge
        private static readonly double EURHUBRAUMDIESEL = 9.50; // Hubraumfaktor Dieselfahrzeuge
        private static readonly double[] CO2STEUERBETRAG = new double[]
        {
                2.00,  //  96 - 115 g/km CO2
                2.20,  // 116 - 135 g/km CO2
                2.50,  // 136 - 155 g/km CO2
                2.90,  // 156 - 175 g/km CO2
                3.40,  // 176 - 195 g/km CO2
                4.00   // > 195 g/km CO2
        };

        /// <summary>
        /// Main
        /// </summary>
        static void Main(string[] args)
        {
            do
            {
                Console.Clear();
                Console.WriteLine("KFZ-Steuer-Rechner 2021");
                Console.WriteLine("---------------------------------------------");

                // Benutzereingaben
                bool eingabenOk = BenutzerEingaben(out bool _diesel, out int _hubraum, out double _co2);

                // KFZ Steuer berechnen
                if (eingabenOk)
                {
                    double kfzSteuer = BerechneKfzSteuer(_diesel, _hubraum, _co2, out double steuerHubraum, out double steuerCo2);
                    Console.WriteLine("---------------------------------------------");
                    Console.WriteLine("Steuer Hubraum:  {0} EUR", steuerHubraum);
                    Console.WriteLine("Steuer CO2: \t {0} EUR", steuerCo2);
                    Console.WriteLine("KFZ Steuer: \t {0} EUR", kfzSteuer);
                    Console.WriteLine("---------------------------------------------");
                }

                // Weitere Berechnung?
                Console.WriteLine("\r\nWeitere Berechnung (ENTER) - Abbrechen mit beliebiger Taste");

            } while (Console.ReadKey().Key == ConsoleKey.Enter);
        }

        /// <summary>
        /// KFZ Steuer berechnen
        /// </summary>
        private static double BerechneKfzSteuer(bool _diesel, int _hubraum, double _co2, out double _steuerHubraum, out double _steuerCo2)
        {
            _steuerCo2 = 0.0;

            // Steuerbetrag Hubraum
            _steuerHubraum = _diesel ? Math.Ceiling(_hubraum / 100.0) * EURHUBRAUMDIESEL : Math.Ceiling(_hubraum / 100.0) * EURHUBRAUMBENZIN;

            // Steuerbetrag CO2 Ausstoß
            for (int  i=0; i<=5; i++)
            {
                double co2Faktor = 95.0 + i * 20.0;

                if (i < 5)
                    _steuerCo2 += Math.Max(Math.Min(_co2 - co2Faktor, 20), 0) * CO2STEUERBETRAG[i];
                else
                    _steuerCo2 += Math.Max(_co2 - co2Faktor, 0) * CO2STEUERBETRAG[i];
            }

            // KFZ Steuer 
            return _steuerCo2 + _steuerHubraum;
        }

        /// <summary>
        /// Benutzereingaben abfragen und überprüfen
        /// </summary>
        private static bool BenutzerEingaben(out bool _diesel, out int _hubraum, out double _co2)
        {
            string input;

            // out-Variablen initialisieren
            _diesel = false;
            _hubraum = 0;
            _co2 = 0.0;

            // Fahrzeugtyp
            Console.WriteLine("Wähle den Fahrzeugtyp: Benzin (b) / Diesel (d)");
            input = Console.ReadLine();
            if (input.ToLower().Equals("d"))
                _diesel = true;
            else if (input.ToLower().Equals("b"))
                _diesel = false;
            else
            {
                Console.WriteLine("Falschen Fahrzeugtyp eingegeben...!");
                return false;
            }

            // Hubraum
            Console.WriteLine("Bitte Hubraum in ccm eingeben:");
            if (int.TryParse(Console.ReadLine(), out int hubraum))
                _hubraum = hubraum;
            else
            {
                Console.WriteLine("Ungültigen Wert eingegeben...!");
                return false;
            }

            // CO2-Ausstoß
            Console.WriteLine("Bitte CO2-Ausstoß in g/km eingeben:");
            if (double.TryParse(Console.ReadLine(), out double co2))
                _co2 = co2;
            else
            {
                Console.WriteLine("Ungültigen Wert eingegeben...!");
                return false;
            }

            // alle Eingaben waren gültig
            return true;
        }
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben