//Bier ausgabe
{
//Ihre Auswahl Zeile
{
Console.WriteLine();
Console.WriteLine("Ihre Auswahl:");
Console.WriteLine();
}
//Ausgabe der Biersorten
do
{
for (iIndex = 0; iIndex < sGewählteBiere.Length; iIndex++)
{
if (sGewählteBiere[iIndex] == lBiersorten[iWelcheBiersorte])
{
lAnzahlBiersorten[iWelcheBiersorte]++;
}
}
iIndexBiersorten++;
iWelcheBiersorte++;
}
while (iIndexBiersorten != iVerfügbareBiersorten);
for (iIndex = 0; iIndex < iVerfügbareBiersorten; iIndex++)
{
if (lAnzahlBiersorten[iIndex] > 0)
{
Console.WriteLine(lAnzahlBiersorten[iIndex] + "x " + lBiersorten[iIndex]);
}
}
//Verabschiedung
{
Console.WriteLine();
Console.WriteLine("wird ausgegeben!");
Console.WriteLine("Mhhhh so ein Lecker Bierchen ist schon was schönes! PROST!");
return;
}
}
}
}
}
{
//Bezahlung
Console.WriteLine("Preis deiner Gesamten Auswahl: {0:f} EUR", dEndpreis);
do
{
//User gibt falschen Wert ein
do
{
Console.WriteLine("Bitte wirf das Geld ein:");
Console.WriteLine();
//gibt keine Zahl ein (z.B Buchstabe, oder enter etc...
if (!double.TryParse(Console.ReadLine(), out dGeldeinwurf))
{
Console.WriteLine("Der eingegebene Wert musss eine Zahl sein!");
dGeldeinwurfIstkeineZahl = true;
}
//gibt negative Zahl ein
else if (dGeldeinwurf < 0)
{
Console.WriteLine("Der eingegebene Wert muss positiv sein!");
dGeldeinwurfIstkeineZahl = true;
}
//gibt richtig ein
else
{
dGeldeinwurfIstkeineZahl = false;
}
}
while (dGeldeinwurfIstkeineZahl);
//dDifference weil double im Arbeitsspeicher 0,000000...000001 abgelegt wird --> ist nicht gleich 0
double dDifference = Math.Abs(dEndpreis - dGeldeinwurf);
if (dDifference < 0.001)
{
Console.WriteLine();
Console.WriteLine("Passend bezahlt.");
bAbgeschlossen = true;
}
//zu viel bezahlt
else if (dEndpreis < dGeldeinwurf)
{
double dRückgeld = dGeldeinwurf - dEndpreis;
Console.WriteLine("{0:f} EUR bezahlt. {1:f} EUR zurück.", dGeldeinwurf, dRückgeld);
bAbgeschlossen = true;
}
//zu wenig gezahlt
else
{
dEndpreis -= dGeldeinwurf;
Console.WriteLine();
Console.WriteLine("{0:f} EUR bezahlt. {1:f} EUR noch zu zahlen.", dGeldeinwurf, dEndpreis);
Console.WriteLine();
}
}
while (!bAbgeschlossen);
}
Console.WriteLine("Willkommen beim Lecker Bierchen Automat!");
Console.WriteLine();
//Ausgabe der wählbaren Biersorten
Console.WriteLine("Es gibt folgende Biersorten zur Auswahl:");
for (iIndexVonListe = 0; iIndexVonListe < iVerfügbareBiersorten; iIndexVonListe++)
{
Console.WriteLine(lNummern[iIndexVonListe] + lBiersorten[iIndexVonListe]);
}
//Biersorte wählen:
{
Console.WriteLine("Sie können Maximal " + sGewählteBiere.Length + " Biere pro Bestellung bestellen.");
Console.WriteLine();
//Do/while Schleife falls falsche Nummer gewählt wird
do
{
//Man kann nicht mehr einfach Enter drücken oder einen Buchstaben eingeben. Exeptions werden abgefangen.
do
{
Console.WriteLine("Wähle deine Biersorte:");
Console.WriteLine();
//gibt keine Zahl ein (z.B Buchstabe, oder enter etc...
if (!Int32.TryParse(Console.ReadLine(), out iBiersortenwahl))
{
Console.WriteLine();
Console.WriteLine("Der eingegebene Wert muss eine Zahl sein!");
Console.WriteLine();
bKeineZahleingegeben = true;
}
//gibt negative Zahl ein
else if (iBiersortenwahl < 0)
{
Console.WriteLine();
Console.WriteLine("Der eingegebene Wert muss positiv sein!");
Console.WriteLine();
bKeineZahleingegeben = true;
}
//gibt richtig ein
else
{
bKeineZahleingegeben = false;
}
}
while (bKeineZahleingegeben);
Console.WriteLine();
{
if (iBiersortenwahl == 0)
{
Console.WriteLine("Es werden nun keine weiteren Biere deiner Auswahl hinzugefügt.");
bWeitersBier = false;
}
else if (iBiersortenwahl != 0 | iBiersortenwahl > iVerfügbareBiersorten)
{
iBiersortenwahl--;
if (lAnzahlverfügbarkeitnummern[iBiersortenwahl] <= 0)
{
Console.WriteLine(lAusgaben[1]);
continue;
}
else if (lAnzahlverfügbarkeitnummern[iBiersortenwahl] <= 5)
{
Console.WriteLine(lAusgaben[6] + lAnzahlverfügbarkeitnummern[iBiersortenwahl] + lAusgaben[7]);
Console.WriteLine();
}
//Berechnungen
lAnzahlverfügbarkeitnummern[iBiersortenwahl]--;
dEndpreis += lPreise[iBiersortenwahl];
//Array für Ausgabe der Biere
//ArrayZähler für nächste Belegung von Bit von Array
sGewählteBiere[iArrayZähler] = lBiersorten[iBiersortenwahl];
iArrayZähler += 1;
//Ausgabe was bestellt wurde
Console.WriteLine(lBiersorten[iBiersortenwahl] + lAusgaben[3] + "{0:f}" + lAusgaben[4] + "{1:f}" + lAusgaben[5], lPreise[iBiersortenwahl], dEndpreis);
//Maximal-Bestellwert
if (iArrayZähler == sGewählteBiere.Length)
{
Console.WriteLine(lAusgaben[2]);
bWeitersBier = false;
}
//Nachfrage ob mehr Bier
Console.WriteLine(lAusgaben[0]);
}
//User drückt den Falschen Key
else
{
Console.WriteLine("Unter diesem Wert ist kein Bier hinterlegt!");
Console.WriteLine();
Console.WriteLine(lAusgaben[0]);
}
}
}
//While Fußsteuerung
while (bWeitersBier);
}
using System;
using System.Collections.Generic;
using System.Threading;
namespace Getränkeautomat
{
internal class ProgrammGetränkeautomat
{
static void Main()
{
//Variablen für Bezahlung
bool bAbgeschlossen = false; //bool für (if/else if/else) bei Bezahlung
double dEndpreis = 0;
double dGeldeinwurf;
bool dGeldeinwurfIstkeineZahl; //zum Abfangen der Exeptions
//Variable für Biersortenwahl
int iIndexVonListe;
int iVerfügbareBiersorten = 8;
bool bWeitersBier = true;
int iBiersortenwahl;
int iArrayZähler = 0;
string[] sGewählteBiere = new string[15];
bool bKeineZahleingegeben; //zum Abfangen der Exeptions
//Vairablen für Bierausgabe
int iWelcheBiersorte = 0;
int iIndex;
int iIndexBiersorten = 0;
//LISTEN
//LISTEN
//LISTEN
//Preise
List<double> lPreise = new List<double>()
{
//index 0
2.80 ,
//index 1
2.60 ,
//index 2
3.00 ,
//index 3
3.20 ,
//index 4
3.00 ,
//index 5
3.30 ,
//index 6
3.50 ,
//index 7
3.10
};
//Liste für Biersorten während Cases
List<string> lBiersorten = new List<string>()
{
//index 0
"Helles Bier ",
//index 1
"Pils ",
//index 2
"Schwarzbier ",
//index 3
"Weizen ",
//index 4
"Lagerbier ",
//index 5
"Kellerbier ",
//index 6
"Bockbier ",
//index 7
"Zwickl "
};
//Liste für Abfragen während Cases
List<string> lAusgaben = new List<string>()
{
//index 0
"Möchtest du ein weiters Bier deiner Auswahl hinzufügen? Dann drücke die jeweilige Nummer der gewünschten Biersorte.\nMöchtest du kein weiters Bier drücke Taste <0>.\n",
//index 1
"Diese Biersorte ist aktuell nicht verfügbar!\n",
//index 2
"Maximal-Bestellwert erreicht. Bitte bezahle jetzt.\n",
//index 3
"wurde deiner Aktuellen Auswahl hinzugefügt. \nPreis pro Bier: " ,
//index 4
"EUR. \n \nPreis deiner aktuellen Auswahl: ",
//index 5
"EUR",
//index 6
"Es sind nur noch ",
//index 7
" Flaschen dieser Biersorte verfügbar\n"
};
//Liste für Variablen während Cases
List<int> lAnzahlverfügbarkeitnummern = new List<int>()
{
//index 0
8 ,
//index 1
9 ,
//index 2
6 ,
//index 3
0 ,
//index 4
0 ,
//index 5
0 ,
//index 6
0 ,
//index 7
0
};
List<int> lAnzahlBiersorten = new List<int>()
{
//index 0
0,
//index 1
0,
//index 2
0,
//index 3
0,
//index 4
0,
//index 5
0,
//index 6
0,
//index 7
0,
};
List<string> lNummern = new List<string>()
{
//index 0
"Nummer 1: ",
//index 1
"Nummer 2: ",
//index 2
"Nummer 3: ",
//index 3
"Nummer 4: ",
//index 4
"Nummer 5: ",
//index 5
"Nummer 6: ",
//index 6
"Nummer 7: ",
//index 7
"Nummer 8: "
};
Vielen Dank für Eure Antworten schonmal! Da mir @Abt privat geschrieben hat ich solle am besten den ganzen Code hier bereitstellen. Kommt hier jetzt über mehrere Nachrichten mein vollständiger Code.
LG
Elmini08
Hi,
gleich vorab: ich bin absoluter Anfänger mache also auch Anfänger (Denk-)Fehler. Haltet Beispiele und Erklärungen daher auch bitte simpel und einfach verständlich. Ich lerne gerne mit Codebeispielen, da ich Artikel über Funktionen und Operatoren meist nicht verstehe. Bitte antwortet nicht auf diese Frage, wenn ihr mir nicht grundsätzlich bei der Frage helfen wollt. Danke! Ich verwende auch die ungarische Notation, da wir das in der Berufsschule so lernen und dieses Programm nur eine Übung für die Schule ist.
Ich habe in einer anderen Frage in diesem Forum einiges an Feedback bekommen (teilweise hilfreich). Viele fanden meinen Code nicht strukturiert und einfach lesbar. Könnt ihr mir da helfen? Was würdet ihr verändern, dass die verständlichkeit einfacher bleibt.
//Do/while Schleife falls falsche Nummer gewählt wird
do
{
//Man kann nicht mehr einfach Enter drücken oder einen Buchstaben eingeben. Exeptions werden abgefangen.
do
{
Console.WriteLine("Wähle deine Biersorte:");
Console.WriteLine();
//gibt keine Zahl ein (z.B Buchstabe, oder enter etc...
if (!Int32.TryParse(Console.ReadLine(), out iBiersortenwahl))
{
Console.WriteLine();
Console.WriteLine("Der eingegebene Wert muss eine Zahl sein!");
Console.WriteLine();
bKeineZahleingegeben = true;
}
//gibt negative Zahl ein
else if (iBiersortenwahl < 0)
{
Console.WriteLine();
Console.WriteLine("Der eingegebene Wert muss positiv sein!");
Console.WriteLine();
bKeineZahleingegeben = true;
}
//gibt richtig ein
else
{
bKeineZahleingegeben = false;
}
}
while (bKeineZahleingegeben);
Console.WriteLine();
{
if (iBiersortenwahl == 0)
{
Console.WriteLine("Es werden nun keine weiteren Biere deiner Auswahl hinzugefügt.");
bWeitersBier = false;
}
else if (iBiersortenwahl != 0 | iBiersortenwahl > iVerfügbareBiersorten)
{
iBiersortenwahl--;
if (lAnzahlverfügbarkeitnummern[iBiersortenwahl] <= 0)
{
Console.WriteLine(lAusgaben[1]);
continue;
}
else if (lAnzahlverfügbarkeitnummern[iBiersortenwahl] <= 5)
{
Console.WriteLine(lAusgaben[6] + lAnzahlverfügbarkeitnummern[iBiersortenwahl] + lAusgaben[7]);
Console.WriteLine();
}
//Berechnungen
lAnzahlverfügbarkeitnummern[iBiersortenwahl]--;
dEndpreis += lPreise[iBiersortenwahl];
//Array für Ausgabe der Biere
//ArrayZähler für nächste Belegung von Bit von Array
sGewählteBiere[iArrayZähler] = lBiersorten[iBiersortenwahl];
iArrayZähler += 1;
//Ausgabe was bestellt wurde
Console.WriteLine(lBiersorten[iBiersortenwahl] + lAusgaben[3] + "{0:f}" + lAusgaben[4] + "{1:f}" + lAusgaben[5], lPreise[iBiersortenwahl], dEndpreis);
//Maximal-Bestellwert
if (iArrayZähler == sGewählteBiere.Length)
{
Console.WriteLine(lAusgaben[2]);
bWeitersBier = false;
}
//Nachfrage ob mehr Bier
Console.WriteLine(lAusgaben[0]);
}
//User drückt den Falschen Key
else
{
Console.WriteLine("Unter diesem Wert ist kein Bier hinterlegt!");
Console.WriteLine();
Console.WriteLine(lAusgaben[0]);
}
}
}
//While Fußsteuerung
while (bWeitersBier);
}
{
//Bezahlung
Console.WriteLine("Preis deiner Gesamten Auswahl: {0:f} EUR", dEndpreis);
do
{
//User gibt falschen Wert ein
do
{
Console.WriteLine("Bitte wirf das Geld ein:");
Console.WriteLine();
//gibt keine Zahl ein (z.B Buchstabe, oder enter etc...
if (!double.TryParse(Console.ReadLine(), out dGeldeinwurf))
{
Console.WriteLine("Der eingegebene Wert musss eine Zahl sein!");
dGeldeinwurfIstkeineZahl = true;
}
//gibt negative Zahl ein
else if (dGeldeinwurf < 0)
{
Console.WriteLine("Der eingegebene Wert muss positiv sein!");
dGeldeinwurfIstkeineZahl = true;
}
//gibt richtig ein
else
{
dGeldeinwurfIstkeineZahl = false;
}
}
while (dGeldeinwurfIstkeineZahl);
//dDifference weil double im Arbeitsspeicher 0,000000...000001 abgelegt wird --> ist nicht gleich 0
double dDifference = Math.Abs(dEndpreis - dGeldeinwurf);
if (dDifference < 0.001)
{
Console.WriteLine();
Console.WriteLine("Passend bezahlt.");
bAbgeschlossen = true;
}
//zu viel bezahlt
else if (dEndpreis < dGeldeinwurf)
{
double dRückgeld = dGeldeinwurf - dEndpreis;
Console.WriteLine("{0:f} EUR bezahlt. {1:f} EUR zurück.", dGeldeinwurf, dRückgeld);
bAbgeschlossen = true;
}
//zu wenig gezahlt
else
{
dEndpreis -= dGeldeinwurf;
Console.WriteLine();
Console.WriteLine("{0:f} EUR bezahlt. {1:f} EUR noch zu zahlen.", dGeldeinwurf, dEndpreis);
Console.WriteLine();
}
}
while (!bAbgeschlossen);
}
Danke euch!
Elmini08
Zitat von Patsche
sehr merkwürdig, dass hier nach der Antwort eines Problems gefragt wird und dann Antworten a la...."Befrag doch die KI" kommen.
Dann bennennt das Forum um in "C# für Fortgeschrittene & Profis".
Willkommen in der deutschen Foren Kultur: Anstatt zu schreiben: Ja ließ doch selber nach oder hier der Artikel kann man es auch einfach sein lassen. Entweder man sucht wirklich nach einer Lösung oder man lässt es einfach antworten hierzu zu geben. Ich bin wirklich dankbar das mir jeder irgendwie "helfen" möchte aber Wenn man einem Azubi der seit ca. 4-5 Monaten Programmiert mit keine Ahnung 1000 Zeilen Code vollballert von dem jeder aus meiner Firma teilweise nur Bahnhof versteht dann ist das keine Hilfe zu "Grundlagen von CSharp".
Ich bin raus. Finde des viel komplizierter als mein Programm und des kann des gleiche. Tut mir leid. Aber danke für deine Hilfe. Schließt Bitte einer den Thread. Danke!
Verstehe ich jetzt nicht ganz!
Hast Du keine Möglichkeit, zu Hause die Datei auf einen USB-Stick runterzuladen? Der Name der ZipDatei ist völlig irrelevat und lässt sich auf dem USB-Stick ändern.
Schicks einfach hier rein!
Danke
Elmini08
ich habe Dir im Anhang einen Getränkeautomaten mit Klassenstruktur angehängt.
Danke dir schonmal.
Leider darf/kann ich auf dem Arbeitslaptop (ich programmiere immer hier in der Arbeit) keine .zip Dateien aus "unbekannten" Quellen herunterladen. Zu dem ändert sich beim abspeichern der .zip der Dateiname komplett. Und die Datei ist heißt nicht mehr so wie unter deinem Beitrag zusehen ist.
Kannst du den Code normal als Codeblock teilen? Wäre echt super.
Danke nochmal!
Elmini08