C# :: Aufgabe #347 :: Lösung #1
4 Lösungen
#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ß
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
von dany_mue (240 Punkte)
- 05.02.2021 um 21:55 Uhr
// 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
Seite 1 von 0
1
