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.
}
}
}
