| Autor |
Beitrag |
maknausd
Hält's aus hier
Beiträge: 5
|
Verfasst: Sa 07.01.12 00:34
tach!
ich hoffe ihr könnt mir weiterhelfen  habe ein kleines programm für preis- und mengeneingabe entwickelt. die do-while schleife soll sich dabei solange wiederholen und die eingegebenen mengen mit den preisen berechnen, bis der benutzer die taste "E" zum beenden drückt und das ergebnis bzw. der gesamtpreis ausgegeben wird.
ich verzweifel langsam
das ist mein bisheriger code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| string sMenge = "", sEPreis = "", sBeenden = ""; int iMenge = 0; double dEPreis = 0.0, dGesNetto = 0.0, dGesBrutto = 0.0, dMWST = 19, dGesMWST = 0.0;
do { Console.Write("// Bitte Artikelmenge eingeben: "); sMenge = Console.ReadLine(); iMenge = Convert.ToInt32(sMenge);
Console.Write("// Bitte Einzelpreis eingeben: "); sEPreis = Console.ReadLine(); dEPreis = Convert.ToDouble(sEPreis);
Console.WriteLine("_________________________________________________"); }
while (sBeenden == "E"); {
Console.Write("Taste 'E' drücken um zu beenden"); Console.ReadLine();
dGesNetto = dEPreis * iMenge; Console.WriteLine("-> Gesamtpreis Netto: " + dGesNetto + " " + "EUR");
dGesMWST = dGesNetto * dMWST / 100; Console.WriteLine("-> Enthaltene Mehrwertsteuer: " + dGesMWST + " " + "EUR");
dGesBrutto = dGesNetto + dGesMWST; Console.WriteLine("-> Gesamtpreis Brutto: " + dGesBrutto + " " + "EUR"); } |
schon mal vielen dank für eure hilfen!!
Moderiert von Kha: Quote- durch C#-Tags ersetzt
|
|
papa69
      
Beiträge: 79
Erhaltene Danke: 23
Win 10, Ubuntu
C#, Java, C
|
Verfasst: Sa 07.01.12 12:41
hallo maknausd,
ohne jetzt deinen Code genau zu studieren, versuch mal die while-Schleife so:
C#-Quelltext 1: 2:
| while (!sBeenden == "E") ... |
und ganz ohne Semikolon !!!! sonst wird das nix
_________________ Daniel Bauer
... fatal ist nur, wenn sich das Licht am Ende des Tunnels als entgegenkommender ICE entpuppt ...
|
|
Th69
      

Beiträge: 4805
Erhaltene Danke: 1061
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Sa 07.01.12 13:49
Hallo maknausd
pap69 meinte eher
C#-Quelltext 1: 2: 3: 4:
| while (sBeenden != "E") {
} |
Außerdem mußt du selbstverständlich die Variable "sBeenden" innerhalb der Schleife setzen (sonst hast du eine Endlosschleife):
C#-Quelltext 1:
| sBeenden = Console.ReadLine(); |
Jetzt mußt du nur noch rausfinden, wie er die Schleife sofort verläßt, ohne nochmals das Ergebnis zu drucken. Insbesondere mußt du die Schleife aber logisch abändern, denn bisher erzeugst du immer wieder die gleiche Ausgabe - aber das wirst du sehen, wenn du dein Programm entsprechend angepaßt hast...
|
|
maknausd 
Hält's aus hier
Beiträge: 5
|
Verfasst: Sa 07.01.12 14:33
|
|
Th69
      

Beiträge: 4805
Erhaltene Danke: 1061
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Sa 07.01.12 15:25
Hallo,
jetzt sehe ich deinen Fehler, nachdem ich nochmals deinen Code komplett angeschaut habe - ich hatte mich von der Antwort von papa69 irritieren lassen.
Du hast ja zuerst eine do-while-Schleife und danach dann einfach einen eigenständigen Block.
Daher mußt du die "Beenden"-Ausgabe und die Abfrage natürlich in die obere Schleife integrieren:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| do { ...
Console.Write("Taste 'E' drücken um zu beenden"); sBeenden = Console.ReadLine();
} while (sBeenden != "E");
|
Um die Zugehörigkeit von "while" bei einer do-while-Schleife besser auszudrücken, wird sie daher meist direkt nach der schließenden Block-Klammer gesetzt (so wie in meinem Code).
Daher vergiß meine Anmerkungen bzgl. der Schleife 
|
|
maknausd 
Hält's aus hier
Beiträge: 5
|
Verfasst: Sa 07.01.12 16:29
hi,
danke dir! ich habe das jetzt mal so eingefügt, allerdings wenn ich die Taste 'E' drücke dann beendet er  das ist schon mal schön und gut!! allerdings soll er ja nicht die komplette konsole gleiche beenden sondern mit E die schleife beenden und das ergebnis anzeigen ohne das man nur kurz das ergebnis sieht und die konsole aber sofort beendet wird.. ich weiß, ich rede vll. etwas zuu kompliziert  sorry! mein nächstes problem ist, mir ist aufgefallen, das er jetzt nur immer jeweils einzelne artikelmengen und dem einzelpreis berechnet und nicht komplett in der schleife bzw. den gesamtpreis  verzweiflung ohne ende 
|
|
Th69
      

Beiträge: 4805
Erhaltene Danke: 1061
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Sa 07.01.12 18:07
Hallo,
daß die Konsole beendet wird, wenn du das Programm aus dem Visual Studio aufrufst, ist normal so.
Entweder mittels Strg+F5 ("Starten ohne Debugging") dein Programm aufrufen, oder aber in die letzte Zeile deiner Main-Methode noch "Console.ReadLine()" einbauen.
Und wenn du die Ausgabe jeweils nach der Eingabe haben willst, dann mußt du diese ebenfalls in die Schleife packen:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| do { } while(...); |
Nach welchem Buch oder Tutorial lernst du denn? Oder ist das für die Schule/Uni?
P.S. Die obige Reihenfolge nennt man übrigens auch EVA-Prinzip
Zuletzt bearbeitet von Th69 am Sa 07.01.12 18:13, insgesamt 1-mal bearbeitet
|
|
maknausd 
Hält's aus hier
Beiträge: 5
|
Verfasst: Sa 07.01.12 18:11
danke, das ist für die schule -.- problem ist, das die lehrer absolut unfähig sind das rüberzubringen.. nun darf ich mir das alles nach video-tutorials selbst beibiegen.. *spitze!*
|
|
Th69
      

Beiträge: 4805
Erhaltene Danke: 1061
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Sa 07.01.12 18:25
Du kannst dir auch mal eines der beiden OpenBooks Visual C# 2008 bzw. Visual C# 2010 durchlesen - insbesondere "Kapitel 2 Grundlagen der Sprache C#".
Und dann gibt es noch das Buch C#, welches sich mehr mit den Grundlagen der Sprache sowie .NET beschäftigt (die beiden anderen Bücher behandeln hauptsächlich die GUI-Programmierung mit WinForms bzw. WPF).
Und wenn du daran Spaß hast bzw. weiter am Programmieren Spaß haben willst, dann solltest du dir auch ein Buch zulegen.
Empfohlen wird auch des öfteren C# von Kopf bis Fuß, jedoch kommt nicht jeder mit der unkonventionellen und lockeren Art und Weise klar (am besten, du liest dir ein paar Leseproben dazu durch).
|
|
maknausd 
Hält's aus hier
Beiträge: 5
|
Verfasst: Sa 07.01.12 21:12
abend
es hat geklappt!!! yeah!!! danke euch für eure hilfen  suuuper!!!!
mein ergebnis:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50:
| string sMenge = ""; int iMenge = 0; double dEPreis = 0.0, dGesNetto = 0.0, dGesBrutto = 0.0, dMWST = 19, dGesMWST = 0.0;
do { Console.Write("-> Bitte Artikelmenge eingeben: ");
iMenge = Convert.ToInt32(Console.ReadLine());
Console.Write("-> Bitte Einzelpreis eingeben: ");
dEPreis = Convert.ToDouble(Console.ReadLine());
Console.Write("-> Taste e für Ende: "); sMenge = Console.ReadLine();
dGesNetto = dGesNetto + dEPreis * iMenge;
dGesMWST = dGesNetto * dMWST / 100;
dGesBrutto = dGesNetto + dGesMWST; } while (sMenge != "e"); {
Console.WriteLine("_________________________________________________"); Console.WriteLine("Gesamtpreis Netto" + "\t" + "\t" + "\t" + "= " + dGesNetto + " " + "EUR");
Console.WriteLine("+ 19% Mehrwertsteuer" + "\t" + "\t" + "\t" + "= " + dGesMWST + " " + "EUR");
Console.WriteLine("Gesamtpreis Brutto" + "\t" + "\t" + "\t" + "= " + dGesBrutto + " " + "EUR"); }
Console.ReadKey(); |
Moderiert von Th69: Quote- durch C#-Tags ersetzt
|
|