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