C++ :: Aufgabe #311

5 Lösungen Lösungen öffentlich

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ß


Lösungen:

vote_ok
von The1tobi (200 Punkte) - 09.11.2020 um 19:36 Uhr
Quellcode ausblenden C-Code
#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;
}
vote_ok
von Mahlnycdir (50 Punkte) - 09.11.2020 um 21:08 Uhr
Quellcode ausblenden C-Code
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;
	}
}
vote_ok
von casoliv (40 Punkte) - 10.11.2020 um 10:40 Uhr
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

Quellcode ausblenden C-Code
#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;



}

vote_ok
von EErza (20 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";
}
vote_ok
von JKooP (5930 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";
}