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

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ß


#4
vote_ok
von EErza (80 Punkte) - 11.11.2020 um 18:04 Uhr
Quellcode ausblenden C-Code
#include <iostream>
#include <string>
#include <iomanip>

using namespace std;

struct P_Base {
	const double basePrice = 2.95;
	const double minutesPrice = 0.10;
	const string paketName = "P_Base";
} pbase;

struct P_100 {
	const double basePrice = 3.95;
	const int freeMinutes = 100;
	const double minutesPrice = 0.12;
	const string paketName = "P_100";
} p100;

struct P_300 {
	const double basePrice = 7.95;
	const int freeMinutes = 300;
	const double minutesPrice = 0.15;
	const string paketName = "P_300";
} p300;

struct P_600 {
	const double basePrice = 12.95;
	const int freeMinutes = 600;
	const double minutesPrice = 0.20;
	const string paketName = "P_600";
} p600;

struct P_Flat {
	const double basePrice = 29.95;
	const string paketName = "P_Flat";
} pflat;

bool checkPaket(const string& paket) {
	if(paket == pbase.paketName || paket == p100.paketName || paket == p300.paketName ||
								   paket == p600.paketName || paket == pflat.paketName) {
		return true;
	} else {
		return false;
	}

}

void showPakets() {
	cout << setprecision(2) << fixed;
	cout << "----- Paket Typen und Preise -----\n";
	cout << "-> Paket_Basis (" << pbase.paketName << "):\n";
	cout << "\t- Basispreis: " << pbase.basePrice << "€\n";
	cout << "\t- Freiminuten: 0\n";
	cout << "\t- Minutenpreis: " << pbase.minutesPrice << "€\n\n";

	cout << "-> Paket_100 (" << p100.paketName << "):\n";
	cout << "\t- Basispreis: " << p100.basePrice << "€\n";
	cout << "\t- Freiminuten: " << p100.freeMinutes << "\n";
	cout << "\t- Minutenpreis: " << p100.minutesPrice << "€\n\n";

	cout << "-> Paket_300 (" << p300.paketName << "):\n";
	cout << "\t- Basispreis: " << p300.basePrice << "€\n";
	cout << "\t- Freiminuten: " << p300.freeMinutes << "\n";
	cout << "\t- Minutenpreis: " << p300.minutesPrice << "€\n\n";

	cout << "-> Paket_600 (" << p600.paketName << "):\n";
	cout << "\t- Basispreis: " << p600.basePrice << "€\n";
	cout << "\t- Freiminuten: " << p600.freeMinutes << "\n";
	cout << "\t- Minutenpreis: " << p600.minutesPrice << "€\n\n";

	cout << "-> Paket_Flat (" << pflat.paketName << "):\n";
	cout << "\t- Basispreis: " << pflat.basePrice << "€\n";
	cout << "\t- Freiminuten: 0\n";
	cout << "\t- Minutenpreis: 0.00€\n\n";
}

double calcTotalPrice(const string& paket, int minutes) {
	if(paket == pbase.paketName) {
		return pbase.basePrice + (minutes * pbase.minutesPrice);
	} else if(paket == p100.paketName) {
		return p100.basePrice + (minutes > 100 ? p100.minutesPrice * (minutes - p100.freeMinutes) : 0.0);
	} else if(paket == p300.paketName) {
		return p300.basePrice + (minutes > 300 ? p300.minutesPrice * (minutes - p300.freeMinutes) : 0.0);
	} else if(paket == p600.paketName) {
		return p600.basePrice + (minutes > 600 ? p600.minutesPrice * (minutes - p600.freeMinutes) : 0.0);
	} else if(paket == pflat.paketName) {
		return pflat.basePrice;
	} else {
		return 0.0;
	}
}

int main() {
	string paket;
	int minutes;

	showPakets();

	do {
		cout << "Paket wählen: ";
		cin >> paket;

		if(!checkPaket(paket)) {
			cout << "Falsches Paket angegeben!\n\n";
		}
	} while(!checkPaket(paket));

	cout << "Telefonierte Minuten: ";
	cin >> minutes;

	cout << "\nGesamtpreis = " << calcTotalPrice(paket, minutes) << "€\n";
}

Kommentare:

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

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