C++ :: Aufgabe #320

1 Lösung Lösung ö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 JKooP (18090 Punkte) - 24.04.2021 um 21:49 Uhr
C++ 17
Quellcode ausblenden C-Code
#include "steuer.h"

int main()
{
    steuer st(Antrieb::otto, 1969, 158);
    cout << fixed << setprecision(2);
    st.print_result();
}

.h
Quellcode ausblenden C-Code
#pragma once
#include <iostream>
#include <vector>
#include <tuple>
#include <iomanip>
using namespace std;

enum class Antrieb{ otto = 200, diesel = 950 };

class steuer
{
private:
    vector<tuple<int, int, double>> preise_co2{
        {96, 115, 2.0},
        {116, 135, 2.2},
        {136, 155, 2.5},
        {156, 175, 2.9},
        {176, 195, 3.4},
        {196, 9999, 4.0}
    };
    int co2_g, hubraum_ccm;
    Antrieb antrieb;

public:
    steuer(Antrieb antrieb_, int hubraum_ccm_, int co2_g_) :antrieb{ antrieb_ }, hubraum_ccm{ hubraum_ccm_ }, co2_g{ co2_g_ }{}
    double steuerbetrag(); 
    void print_result();
};

.cpp
Quellcode ausblenden C-Code
#include "steuer.h"

double steuer::steuerbetrag()
{
    auto kosten_co2{ 0.0 };
    for (const auto& i : preise_co2) {
        if (co2_g < get<0>(i))
            break;
        else if (co2_g >= get<0>(i) && co2_g <= get<1>(i))
            kosten_co2 += (co2_g + 1 - get<0>(i)) * get<2>(i);
        else
            kosten_co2 += (get<1>(i) - get<0>(i) + 1) * get<2>(i);
    }
    return (int)antrieb / 100.0 * ceil(hubraum_ccm / 100.0) + kosten_co2;
}

void steuer::print_result()
{
    cout << "Steuer: " << steuerbetrag() << " Euro" << endl;
}