C# :: Aufgabe #347
4 Lösungen

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ß
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:

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; }

// 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; } } }
NET 5.x; C# 9.x
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"; } }

class Program { [Flags] private enum Kraftstoff {Benzin = 0, Diesel = 1} static void Main(string[] args) { //string autoMarke = "Volkswagen Tiguan 1,5 TSI"; string autoMarke = "Volvo XC 90 B5"; int hubraum = 1969; // Hubraumangaben in cm³ //int hubraum = 1498; // Hubraumangaben in cm³ int co2 = 158; // CO2-Ausstoß in gramm/km double kfzSteuer = GetKfzSteuer((int)Kraftstoff.Diesel, hubraum, co2); Console.WriteLine("Die KFZ-Steuer für \"{0}\" beträgt {1}", autoMarke, kfzSteuer.ToString("C", CultureInfo.CreateSpecificCulture("de-DE"))); } private static double GetKfzSteuer(int kraftstoff, int hubraum, int co2) { double steuerAnteil = 0.0; // Euro/100cm³ switch (kraftstoff) { case (int)Kraftstoff.Benzin: // Benzin steuerAnteil = 2.0; break; case (int)Kraftstoff.Diesel: // Diesel steuerAnteil = 9.5; break; default: break; } int steuerHubraum = hubraum / 100; if (hubraum % 100 > 0) steuerHubraum++; double steuerAnteilCO2 = 0.0; // Euro/g if (co2 >= 96) steuerAnteilCO2 += 2.0 * (co2 >= 116 ? 20 : co2 - 96 + 1); if (co2 >= 116) steuerAnteilCO2 += 2.2 * (co2 >= 136 ? 20 : co2 - 116 + 1); if (co2 >= 136) steuerAnteilCO2 += 2.5 * (co2 >= 156 ? 20 : co2 - 136 + 1); if (co2 >= 156) steuerAnteilCO2 += 2.9 * (co2 >= 176 ? 20 : co2 - 156 + 1); if (co2 >= 176) steuerAnteilCO2 += 3.4 * (co2 >= 196 ? 20 : co2 - 176 + 1); if (co2 >= 196) steuerAnteilCO2 += 4.0 * (co2 - 196 + 1); return steuerHubraum * steuerAnteil + steuerAnteilCO2; ; } }