C# :: Aufgabe #338 :: Lösung #3

4 Lösungen Lösungen öffentlich
#338

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ß


#3
vote_ok
von JKooP (18090 Punkte) - 15.11.2020 um 10:42 Uhr
NET 5.x; C# 8.x
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;

namespace CS_NET5_Aufgabe_338_Mobilfunkanbieter
{
    public enum Pakete
    {
        PBasis = 0, P100 = 100, P300 = 300, P600 = 600, PFlat = int.MaxValue
    }
    class Program
    {
        public static void Main()
        {
            var paket = Pakete.P300;
            var minuten = 400;
            Console.WriteLine($"Die Gesamtkosten im Monat betragen {Gebuehr(paket, minuten)} Euro.\n");
        }

        private static readonly List<(Pakete paket, double grundpreis, int freiminuten, double minutenpreis)> _lst = new() // C# 9.x
        {
            (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)
        };

        static double Gebuehr(Pakete p, int min) =>
            _lst.Where(x => x.paket == p).Select(l => ((min - l.freiminuten) < 0 ? 0 : (min - l.freiminuten)) * l.minutenpreis + l.grundpreis).FirstOrDefault();
    }
}

Kommentare:

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

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

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.