C# :: Aufgabe #347

3 Lösungen Lösungen öffentlich

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ß

Lösungen:

vote_ok
von Minikini (50 Punkte) - 16.01.2021 um 08:52 Uhr
Quellcode ausblenden C#-Code
static void Main(string[] args)
        {
            Steuer("diesel", 1969, 158);
            Console.ReadLine();
        }

        static void Steuer(string antriebsart, int hubraum, int co2)
        {
            double hubraumsteuer = 0;

            if(antriebsart.ToLower() == "diesel")
            {
                hubraumsteuer = Berechne_Hubraumsteuer(9.5, hubraum);
            }
            if (antriebsart.ToLower() == "benzin")
            {
                hubraumsteuer = Berechne_Hubraumsteuer(2, hubraum);

            }

            Console.WriteLine("Hubraumsteuer: "+hubraumsteuer);

            double co2steuer = 0;

            if (co2 <=95)
            {
                co2steuer = 0;
            }
            if (co2 >=95 && co2 <=115)
            {
                co2steuer = (co2 - 94) * 2;
            }
            if (co2 >= 116 && co2 <= 135)
            {
                co2steuer = (co2 - 115) * 2.2 + 40;
            }
            if (co2 >= 136 && co2 <= 155)
            {
                co2steuer = (co2 - 135) * 2.5 + 84;
            }
            if (co2 >= 156 && co2 <= 175)
            {
                co2steuer = (co2 - 155) * 2.9 + 134;
            }
            if (co2 >= 176 && co2 <= 195)
            {
                co2steuer = (co2 - 175) * 3.4 + 192;
            }
            if (co2 >= 196)
            {
                co2steuer = (co2 - 195) * 4 + 260;
            }



            Console.WriteLine("CO2-Steuer: "+co2steuer);
            Console.WriteLine();

            double gesamtsteuer = co2steuer + hubraumsteuer;
            Console.WriteLine("Die KFZ-Steuer beträgt: "+gesamtsteuer+"Euro");

        }

        static double Berechne_Hubraumsteuer(double multiplikator, int hubraum)
        {
            double hubraumsteuer = 0;

            hubraumsteuer = hubraum / 100 * multiplikator;
            if (hubraum % 100 > 0)
                hubraumsteuer += multiplikator;

            return hubraumsteuer;
        }
vote_ok
von dany_mue (220 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;
        }
    }
}
vote_ok
von JKooP (9900 Punkte) - 12.02.2021 um 06:52 Uhr
NET 5.x; C# 9.x
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;

namespace Kfz_Steuer
{
    enum Antrieb { Otto = 200, Diesel = 950 }

    class Program
    {
        static void Main(string[] args)
        {
            var steuer = new Steuer(Antrieb.Diesel, 1969, 158);
            Console.WriteLine(steuer);
        }
    }

    record Steuer(Antrieb Antrieb, int Hubraum_ccm, int Co2_g)
    {
        private readonly List<(int von, int bis, double faktor)> _lstPreiseCo2 = new()
        {
            (96, 115, 2.0),
            (116, 135, 2.2),
            (136, 155, 2.5),
            (156, 175, 2.9),
            (176, 195, 3.4),
            (196, 9999, 4.0)
        };

        public double Steuerbetrag
        {
            get
            {
                var kostenCo2 = 0.0;

                foreach (var (von, bis, faktor) in _lstPreiseCo2)
                {
                    if (Co2_g < von)
                        break;
                    else if (Co2_g >= von && Co2_g <= bis)
                        kostenCo2 += (Co2_g + 1 - von) * faktor;
                    else
                        kostenCo2 += (bis - von + 1) * faktor;
                }
                return (int)Antrieb / 100.0 * Math.Ceiling(Hubraum_ccm / 100.0) + kostenCo2;
            }
        }

        public override string ToString() => $"Steuer: {Steuerbetrag:F2} Euro";
    }
}