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

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ß
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ß
Lösungen:

#include <iostream> using namespace std; float mobilfunkTarif (int typ , int minuten) { float basis = 2.95 , hundert = 3.95 , dreihundert = 7.95 , sechshundert = 12.95, flat = 29.95; float basisMin = 0.1 , hundertMin = 0.12 , dreihundertMin = 0.15 , sechshundertMin = 0.20 , flatMin = 0; float kostenMobilfunkTarif = 0; if(typ == 1) return kostenMobilfunkTarif = basis + minuten * basisMin; if(typ == 2) { if (minuten <= 100) minuten = 0; if (minuten >= 100) minuten = minuten - 100; return kostenMobilfunkTarif = hundert + minuten * hundertMin; } if(typ == 3) { if (minuten <= 300) minuten = 0; if (minuten >= 300) minuten = minuten - 300; return kostenMobilfunkTarif = dreihundert + minuten * dreihundertMin; } if(typ == 4) { if (minuten <= 600) minuten = 0; if (minuten >= 600) minuten = minuten - 600; return kostenMobilfunkTarif = sechshundert + minuten * sechshundertMin; } if(typ == 5) return kostenMobilfunkTarif = flat + minuten * flatMin; } int main() { cout << "Du zahlst:" << mobilfunkTarif(1,100) << "Euro in diesem Tarif" << endl; cout << "Du zahlst:" << mobilfunkTarif(2,101) << "Euro in diesem Tarif" << endl; cout << "Du zahlst:" << mobilfunkTarif(3,301) << "Euro in diesem Tarif" << endl; cout << "Du zahlst:" << mobilfunkTarif(4,601) << "Euro in diesem Tarif" << endl; cout << "Du zahlst:" << mobilfunkTarif(5,1000) << "Euro in diesem Tarif" << endl; return 0; }

void Mobile_Price(std::string Type, double Minutes) { double Base_Price; double All_Price; int i; if (Type == "P_Base") i = 1; else if (Type == "P_100") i = 2; else if (Type == "P_300") i = 3; else if (Type == "P_600") i = 4; else if (Type == "P_Flat") i = 5; switch(i) { case 1: Base_Price = 2.95; All_Price = Base_Price * Minutes; std::cout << "Base Price: " << Base_Price << " Euro" << std::endl; std::cout << "All_Price: " << All_Price << " Euro" << std::endl; break; case 2: Base_Price = 2.95; All_Price = Base_Price * (Minutes - 100); std::cout << "Base Price: " << Base_Price << " Euro" << std::endl; if (All_Price >= 0) std::cout << "All_Price: " << All_Price << " Euro" << std::endl; break; case 3: Base_Price = 2.95; All_Price = Base_Price * (Minutes - 300); std::cout << "Base Price: " << Base_Price << " Euro" << std::endl; if (All_Price >= 0) std::cout << "All_Price: " << All_Price << " Euro" << std::endl; break; case 4: Base_Price = 2.95; All_Price = Base_Price * (Minutes - 600); std::cout << "Base Price: " << Base_Price << " Euro" << std::endl; if (All_Price >= 0) std::cout << "All_Price: " << All_Price << " Euro" << std::endl; break; case 5: Base_Price = 29.95; std::cout << "Base Price: " << Base_Price << " Euro" << std::endl; break; } }
Servus,
hier mal eine Lösung von mir. Bin noch blutiger Anfänger was Programmieren angeht habe erst dieses Jahr mit der Ausbildung begonnen und würde mich deshalb sehr über Verbesserungsvorschläge freuen.(Wenn möglich diese dann auch bitte mit Erklärung Wieso, Weshalb usw.)
Entschuldigt schonmal für den Code mess.
LG
Caso
C-Code
hier mal eine Lösung von mir. Bin noch blutiger Anfänger was Programmieren angeht habe erst dieses Jahr mit der Ausbildung begonnen und würde mich deshalb sehr über Verbesserungsvorschläge freuen.(Wenn möglich diese dann auch bitte mit Erklärung Wieso, Weshalb usw.)
Entschuldigt schonmal für den Code mess.
LG
Caso

#include <iostream> using namespace std; int main() { string Tarif; int Minuten; double Gesamtpreis; double Basispreis; double Minutenpreis; double Minutenkosten; double Bezahlminuten; cout << "Bitte geben sie Ihren Paket-Typen an sowie Ihre telefonierten Minuten!" << endl << "Tarifoptionen: P_Basis ; 100 ; 300 ; 600 ; Flat. Bitte eine von den aufgezeigten Tarifoptionen eingeben."; cin >> Tarif; if (Tarif == "P_Basis") { cout << "Ausgewaehlter Tarif P_Basis" << endl; cout << "Bitte geben Sie Ihre telefonierten Minuten ein: " << endl; cin >> Minuten; Basispreis = 2.95; if (Minuten > 0) { Minutenpreis = 0.10; } else { Minutenpreis = 0; } } else if (Tarif == "100") { cout << "Ausgewaehlter Tarif P_100"<< endl; cout << "Bitte geben Sie Ihre telefonierten Minuten ein: " << endl; cin >> Minuten; Basispreis = 3.95; if (Minuten > 100) { Minutenpreis = 0.12; Bezahlminuten=Minuten - 100; } else { Minutenpreis = 0; } } else if (Tarif == "300") { cout << "Ausgewaehlter Tarif P_300"<<endl; cout << "Bitte geben Sie Ihre telefonierten Minuten ein: " << endl; cin >> Minuten; Basispreis = 7.95; if (Minuten > 300) { Minutenpreis = 0.15; Bezahlminuten = Minuten - 300; } else { Minutenpreis = 0; } } else if (Tarif == "600") { cout << "Ausgewaehlter Tarif P_600"<<endl; cout << "Bitte geben Sie Ihre telefonierten Minuten ein: " << endl; cin >> Minuten; Basispreis = 12.95; if (Minuten > 600) { Minutenpreis = 0.20; Bezahlminuten = Minuten - 600; } else { Minutenpreis = 0; } } else if (Tarif == "Flat") { cout << "Ausgewaehlter Tarif P_Flat"<<endl; cout << "Bitte geben Sie Ihre telefonierten Minuten ein: " << endl; cin >> Minuten; Basispreis = 29.95; if (Minuten >= 0) { Minutenpreis = 0; Bezahlminuten = 0; } } else { cout << "Fehlerhafte Eingabe!!"; } Minutenkosten = Minutenpreis * Bezahlminuten; cout << "Der Basispreis fuer diesen Monat betraegt: " << Basispreis << endl; Gesamtpreis = Basispreis + Minutenkosten; cout << "Der Gesamtpreis fuer diesen Monat betraegt: " << Gesamtpreis << endl; }

#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"; }
C++ 11
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"; }