C++ :: Aufgabe #311 :: Lösung #5

5 Lösungen Lösungen öffentlich
#311

Mobilfunkanbieter (Monatsabrechnung)

Anfänger - C++ von JKooP - 07.11.2020 um 09:42 Uhr
Ein Mobilfunkanbieter stellt folgende Pakete zur Verfügung:

Paket-Typ....Basispreis....Freiminuten....Minutenpreis
P_Basis........2,95€..............0...................0,10€
P_100..........3.95€.............100................0,12€
P_300..........7,95€.............300................0,15€
P_600..........12,95€...........600................0,20€
P_Flat..........29,95€...........unbegrenzt.....0,00€

Schreibe eine Funktion/Methode, bei der sowohl der Paket-Typ als auch die telefonierten Minuten übergeben werden.
Als Ergebnis soll der Gesamtpreis inklusive Basispreis für den Monat ausgegeben werden.

Viel Spaß


#5
vote_ok
von JKooP (18090 Punkte) - 15.11.2020 um 10:03 Uhr
C++ 11
Quellcode ausblenden C-Code
#include <iostream>
#include <vector>
using namespace std;

enum class Pakete
{
    PBasis = 0, P100 = 100, P300 = 300, P600 = 600, PFlat = INT_MAX
};

struct Mobilfunktarif
{
    Pakete paket;
    double grundpreis;
    int freiminuten;
    double minutenpreis;
};

const vector<Mobilfunktarif> tarife
{
    { Pakete::PBasis, 2.95,  (int)Pakete::PBasis, 0.10 },
    { Pakete::P100,   4.95,  (int)Pakete::P100,   0.12 },
    { Pakete::P300,   7.95,  (int)Pakete::P300,   0.15 },
    { Pakete::P600,   12.95, (int)Pakete::P600,   0.20 },
    { Pakete::PFlat,  29.95, (int)Pakete::PFlat,  0.00 }
};

double gesamt_preis(const Pakete& paket, const int& minuten)
{
    auto g_preis{ 0.0 };

    for (const auto& tarif : tarife)
    {
        if (tarif.paket == paket)
        {
            auto rest{ minuten - tarif.freiminuten };
            if (rest < 0) rest = 0;
            g_preis = rest * tarif.minutenpreis + tarif.grundpreis;
            break;
        }
    }
    return g_preis;
}

int main()
{
    auto paket{ Pakete::P300 };
    auto minuten{ 400 };
    std::cout << "Der Gesamtpreis im Monat betraegt " << gesamt_preis(paket, minuten) << " Euro.\n";
}

Kommentare:

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

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

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.