C# :: Aufgabe #338
4 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:

using System; namespace Bot { class Program { static public double Methode(string Paket, double Minuten) { switch (Paket) { case "P_Basis": return 2.95 + (Minuten * 0.1); case "P_100": if(Minuten <= 100) return 3.95; else return 3.95 + ((Minuten-100) * 0.12); case "P_300": if (Minuten <= 300) return 7.95; else return 7.95 + (Minuten-300) * 0.15; case "P_600": if (Minuten <= 600) return 12.95; else return 12.95 + ((Minuten-600) * 0.2); case "P_Flat": return 29.95; default: Console.WriteLine("Falsche eingabe"); return 666; } } static void Main(string[] args) { Console.WriteLine(Methode("P_100",101)); } } }

namespace Mobilfunk_Abrechnung { /*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. */ class Program { static void Main(string[] args) { while (true) { try { Console.WriteLine("Monatliche Mobilfunkabrechnung"); Console.WriteLine("\nDies sind unsere Pakete:"); Console.WriteLine("\nBasis Paket = 1"); Console.WriteLine("100 Paket = 2"); Console.WriteLine("300 Paket = 3"); Console.WriteLine("600 Paket = 4"); Console.WriteLine("Flat Paket = 5"); Console.Write("\nGeben Sie bitte Ihr Paket an: "); int typ = Convert.ToInt32(Console.ReadLine()); Console.Write("\nGeben Sie verwendeten Minuten an: "); int min = Convert.ToInt32(Console.ReadLine()); switch (typ) { case 1: Console.WriteLine("Ihre Monatlichen Kosten betragen " + PBasis(min) + " Euro"); break; case 2: Console.WriteLine("Ihre Monatlichen Kosten betragen " + P100(min) + " Euro"); break; case 3: Console.WriteLine("Ihre Monatlichen Kosten betragen " + P300(min) + " Euro"); break; case 4: Console.WriteLine("Ihre Monatlichen Kosten betragen " + P600(min) + " Euro"); break; case 5: Console.WriteLine("Ihre Monatlichen Kosten betragen " + PFlat(min) + " Euro"); break; default: Console.WriteLine("Ungültige Eingabe"); break; } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine("Ungültige Eingabe"); Console.ReadKey(); Console.Clear(); continue; } Console.ReadKey(); Console.Clear(); } } static double PBasis(int minuten) { double MtKosten = minuten * 0.1 + 2.95; return MtKosten; } static double P100(int minuten) { double MtKosten = 0; if(minuten > 100) { MtKosten = (minuten - 100) * 0.12 + 3.95; return MtKosten; } else { return 3.95; } } static double P300(int minuten) { double MtKosten = 0; if(minuten > 300) { MtKosten = (minuten - 300) * 0.15 + 7.95; return MtKosten; } else { return 7.95; } } static double P600(int minuten) { double MtKosten = 0; if (minuten > 600) { MtKosten = (minuten - 600) * 0.2 + 12.95; return MtKosten; } else { return 12.95; } } static double PFlat(int minuten) { double MtKosten = 29.95; return MtKosten; } } }
NET 5.x; C# 8.x
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(); } }

using System; namespace Mobilfunkabrechnung { class Program { static void Main(string[] args) { //VARIABLENDEKLARATION double paket = 0; double paketauswahl; double minuten; double rechnungsbetrag; double P_Basis = 2.95; double P_BasisMinute = 0.1; double P_BasisFrei = 0; double P_100 = 3.95; double P_100Minute = 0.12; double P_100Frei = 100; double P_300 = 7.95; double P_300Minute = 0.15; double P_300Frei = 300; double P_600 = 12.95; double P_600Minute = 0.20; double P_600Frei = 600; double P_Flat = 29.95; //Willkommensmenu Console.WriteLine("Willkommen im Mobilfunkrechner!\nTarife:\t\t[1] Paket Basis\n\t\t[2] Paket 100\n\t\t[3] Paket 300\n\t\t[4] Paket 600\n\t\t[5] Paket All-Net\n"); //Tarifauswahl do { Console.WriteLine("Welchen Tarif hast du: "); paketauswahl = Convert.ToDouble(Console.ReadLine()); } while (paketauswahl != 1 && paketauswahl != 2 && paketauswahl != 3 && paketauswahl != 4 && paketauswahl != 5); switch (paketauswahl) { case 1: Console.WriteLine("Du hast das Basis Paket ausgewählt!"); paket = P_Basis; break; case 2: Console.WriteLine("Du hast das Paket 100 ausgewählt!"); paket = P_100; break; case 3: Console.WriteLine("Du hast das Paket 300 ausgewählt!"); paket = P_300; break; case 4: Console.WriteLine("Du hast das Paket 600 ausgewählt!"); paket = P_600; break; case 5: Console.WriteLine("Du hast das All-Net Paket ausgewählt!"); paket = P_Flat; break; } // Minutenangabe Telefonie Console.WriteLine("Wie viele Minuten hast du telefoniert: "); minuten = Convert.ToDouble(Console.ReadLine()); // Paketauswahl + Berechnung if (paketauswahl == 1) { Console.WriteLine("In deinem Paket sind " + P_BasisFrei + " Freiminuten inbegriffen!"); // Ausgabe der Freiminuten Console.WriteLine("\nBasispreis = " + P_Basis + " Euro\nPreis pro Minute = " + P_BasisMinute + "Euro."); // Erneute Preisausgabe rechnungsbetrag = paket + ((minuten - P_BasisFrei) * P_BasisMinute); // Rechnungsbetrag wird berechnet (Paket = Tarifpreis) Console.WriteLine("\nEndbetrag = " + rechnungsbetrag + " Euro");// Ausgabe des Endbetrags } else if (paketauswahl == 2) { Console.WriteLine("In deinem Paket sind " + P_100Frei + " Freiminuten inbegriffen!"); // Ausgabe der Freiminuten Console.WriteLine("\nBasispreis = " + P_100 + " Euro\nPreis pro Minute = " + P_100Minute + "Euro."); // Erneute Preisausgabe if (minuten <= P_100Frei) // Wenn weniger als 100 Minuten telefoniert wurde, dann keine extrakosten. { rechnungsbetrag = paket; } else // Wenn mehr als 100 Minuten telefoniert wurde, dann 100 Freiminuten abziehen und dann berechnen. { rechnungsbetrag = paket + ((minuten - P_100Frei) * P_100Minute); } Console.WriteLine("\nEndbetrag = " + rechnungsbetrag + " Euro"); // Ausgabe des Endbetrags } else if (paketauswahl == 3) { Console.WriteLine("In deinem Paket sind " + P_300Frei + " Freiminuten inbegriffen!"); Console.WriteLine("\nBasispreis = " + P_300 + " Euro\nPreis pro Minute = " + P_300Minute + "Euro."); if (minuten <= P_300Frei) { rechnungsbetrag = paket; } else { rechnungsbetrag = paket + ((minuten - P_300Frei) * P_300Minute); } Console.WriteLine("\nEndbetrag = " + rechnungsbetrag + " Euro"); } else if (paketauswahl == 4) { Console.WriteLine("In deinem Paket sind " + P_600Frei + " Freiminuten inbegriffen!"); Console.WriteLine("\nBasispreis = " + P_600 + " Euro\nPreis pro Minute = " + P_600Minute + "Euro."); if (minuten <= P_600Frei) { rechnungsbetrag = paket; } else { rechnungsbetrag = paket + ((minuten - P_600Frei) * P_600Minute); } Console.WriteLine("\nEndbetrag = " + rechnungsbetrag + " Euro"); } else if (paketauswahl == 5) { Console.WriteLine("In deinem Paket sind UNBEGRENZT Freiminuten inbegriffen!"); Console.WriteLine("\nBasispreis = " + P_Flat + "Euro\nPreis pro Minute = 0.00 Euro."); rechnungsbetrag = paket; Console.WriteLine("\nEndbetrag = " + rechnungsbetrag + " Euro"); } Console.ReadKey(); // Konsolenfenster wird nicht geschlossen, da auf einen Tastendruck gewartet wird. } } }