C :: Aufgabe #301 :: Lösung #2
2 Lösungen

#301
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ß
#2

von JKooP (18090 Punkte)
- 09.01.2021 um 17:31 Uhr

#include <stdio.h> #include <limits.h> #define ANZ_TARIFE 5 enum Pakete { PBasis = 0, P100 = 100, P300 = 300, P600 = 600, PFlat = INT_MAX }; struct Mobilfunktarif { enum Pakete p; // Paket double g; // Grundpreis int f; // Freiminuten double m; // Minutenpreis }t[ANZ_TARIFE]; void erstelle_tarife() { t[0].p = PBasis; t[0].g = 2.95; t[0].f = PBasis; t[0].m = 0.10; t[1].p = P100; t[1].g = 4.95; t[1].f = P100; t[1].m = 0.12; t[2].p = P300; t[2].g = 7.95; t[2].f = P300; t[2].m = 0.15; t[3].p = P600; t[3].g = 12.95; t[3].f = P600; t[3].m = 0.20; t[4].p = PFlat; t[4].g = 29.95; t[4].f = PFlat; t[4].m = 0.00; } double gesamt_preis(enum Pakete paket, int minuten) { double g_preis = 0.0; for (unsigned int i = 0; i < ANZ_TARIFE; i++) { if (t[i].p == paket) { int rest = minuten - t[i].f; if (rest < 0) rest = 0; g_preis = rest * t[i].m + t[i].g; break; } } return g_preis; } void main() { erstelle_tarife(); enum Pakete paket = P300; int minuten = 400; printf("Der Gesamtpreis im Monat betraegt %.2f Euro.\n", gesamt_preis(paket, minuten)); }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1