Autor Beitrag
maknausd
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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:

ausblenden volle Höhe C#-Quelltext
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:
            // Variablendefinition
            string sMenge = "", sEPreis = "", sBeenden = "";
            int iMenge = 0;
            double dEPreis = 0.0, dGesNetto = 0.0, dGesBrutto = 0.0, dMWST = 19, dGesMWST = 0.0;

            do
            {
                // Eingabe Artikelmenge
                Console.Write("// Bitte Artikelmenge eingeben: ");
                sMenge = Console.ReadLine();
                iMenge = Convert.ToInt32(sMenge);

                // Eingabe Einzelpreis
                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();

            // Berechnung / Ausgabe Gesamtnetto
            dGesNetto = dEPreis * iMenge;
            Console.WriteLine("-> Gesamtpreis Netto: " + dGesNetto + " " + "EUR");
            

            // Berechnung / Ausgabe GesamtMWST
            dGesMWST = dGesNetto * dMWST / 100;
            Console.WriteLine("-> Enthaltene Mehrwertsteuer: " + dGesMWST + " " + "EUR");
            

            // Berechnung / Ausgabe GesamtBrutto
            dGesBrutto = dGesNetto + dGesMWST;
            Console.WriteLine("-> Gesamtpreis Brutto: " + dGesBrutto + " " + "EUR");
            }


schon mal vielen dank für eure hilfen!! :)

Moderiert von user profile iconKha: Quote- durch C#-Tags ersetzt
papa69
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 79
Erhaltene Danke: 23

Win 10, Ubuntu
C#, Java, C
BeitragVerfasst: Sa 07.01.12 12:41 
hallo maknausd,

ohne jetzt deinen Code genau zu studieren, versuch mal die while-Schleife so:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4805
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 07.01.12 13:49 
Hallo maknausd :welcome:

pap69 meinte eher
ausblenden 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):
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Sa 07.01.12 14:33 
hallo pap69 und Th69!

vielen dank für eure antwort! :)

also die Variable sBeenden habe ich gesetzt, habe jetzt nochmals hin und her probiert, allerdings bin ich mit meiner logik am ende :( ich bin absoluter neuling zum thema programmieren mit c#.. sry! :( und ich möchte ja die schleife mit der taste "E" stoppen und mir dann das ergebnis anzeigen lassen in der konsole, was also berechnet wurde :)

user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Hallo maknausd :welcome:

pap69 meinte eher
ausblenden 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):
ausblenden 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...
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4805
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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:
ausblenden 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");

// hier nun die Ausgabe...

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 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4805
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
do
{
  // Eingabe

  // Verarbeitung/Berechnung

  // Ausgabe

  // Beenden-Anzeige

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 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4805
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Sa 07.01.12 21:12 
abend :)

es hat geklappt!!! yeah!!! danke euch für eure hilfen :) suuuper!!!! 8)

mein ergebnis:

ausblenden volle Höhe C#-Quelltext
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:
            // Variablendefinition
            string sMenge = "";
            int iMenge = 0;
            double dEPreis = 0.0, dGesNetto = 0.0, dGesBrutto = 0.0, dMWST = 19, dGesMWST = 0.0;

            do
            {
                // Eingabe Artikelmenge
                Console.Write("-> Bitte Artikelmenge eingeben: ");

                // Konvertierung / Ausgabe Artikelmenge
                iMenge = Convert.ToInt32(Console.ReadLine());


                // Eingabe Einzelpreis
                Console.Write("-> Bitte Einzelpreis eingeben: ");

                // Konvertierung / Ausgabe Einzelpreis
                dEPreis = Convert.ToDouble(Console.ReadLine());


                // Beenden
                Console.Write("-> Taste e für Ende: ");
                sMenge = Console.ReadLine();


                // Berechnung Gesamtnetto
                dGesNetto = dGesNetto + dEPreis * iMenge;

                // Berechnung MWST
                dGesMWST = dGesNetto * dMWST / 100;

                // Berechnung Gesamtbrutto
                dGesBrutto = dGesNetto + dGesMWST;
            }
            while (sMenge != "e");
            {

                Console.WriteLine("_________________________________________________");
                // Ausgabe Gesamtnetto
                Console.WriteLine("Gesamtpreis Netto" + "\t" + "\t" + "\t" + "= " + dGesNetto + " " + "EUR");

                // Ausgabe MWST
                Console.WriteLine("+ 19% Mehrwertsteuer" + "\t" + "\t" + "\t" + "= " + dGesMWST + " " + "EUR");

                // Ausgabe Gesamtbrutto
                Console.WriteLine("Gesamtpreis Brutto" + "\t" + "\t" + "\t" + "= " + dGesBrutto + " " + "EUR");
            }

            Console.ReadKey();


Moderiert von user profile iconTh69: Quote- durch C#-Tags ersetzt