Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie kann ich in einer While-Schleife prüfen, ob ein Maximalgebot erreicht ist?
AnoriOne
myCSharp.de - Member



Dabei seit:
Beiträge: 2
Herkunft: Berlin

Themenstarter:

Wie kann ich in einer While-Schleife prüfen, ob ein Maximalgebot erreicht ist?

beantworten | zitieren | melden

Ich versuche gerade eine Aufgabe in Sololearn zu meistern, scheitere aber jämmerlich ???
Zitat
Create a program for auction with a maximum bid set.

Mein Code:


static void Main(string[] args)
        {
            int maxBid = Convert.ToInt32(Console.ReadLine());
               
                   while(true)
                   {
                   string ins = Console.ReadLine();
                   int Bid = Convert.ToInt32(ins);
                     
                     if (Bid > maxBid);
                     {
                     Console.WriteLine("Sold:" + Bid);
                     break;
                     }
                   }
            
        }


Der erste eingegebene Wert soll den maximalen Wert bestimmen. Alle folgenden Eingaben jeweils Gebote. Wenn ein Gebot den max. Wert überschreitet soll verkauft für: ausgegeben werden.

Danke im vorraus für eure Hilfe!
Neuling in C#
private Nachricht | Beiträge des Benutzers
Taipi88
myCSharp.de - Member

Avatar #avatar-3220.jpg


Dabei seit:
Beiträge: 1044
Herkunft: Mainz

beantworten | zitieren | melden

Hi,

grundlegend hilft es (wenn du Hilfe haben möchtest), wenn du beschreibst welches Problem du überhaupt hast.

Direkt offensichtlich:
Da ist ein Semikolon, welches dort nicht hingehört bei: "if (Bid > maxBid);"
(Das hindert das Programm allerdings nicht - es ist nur unnötig)

Bei Ausführung des Codes lässt sich meinerseits feststellen, dass dieser sich verhält wie zu erwarten - nämlich:

Solange die Eingabe < erste Eingabe ist hängt man in der while-Schleife. Gibt man was größeres ein - ist das Programm zu Ende. (Es schreibt sogar "Sold:<Number>" - das Programm ist dann nur so schnell zu, dass du es nicht mehr siehst...)

Sofern das dein Problem ist bin ich sicher, dass du eine Methode aus dem System.Console-Bereich findest, die es dem Nutzer ermöglicht zu sehen was passiert.

LG
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Taipi88 am .
private Nachricht | Beiträge des Benutzers
Jamikus
myCSharp.de - Member



Dabei seit:
Beiträge: 251
Herkunft: Oberhausen (NRW)

beantworten | zitieren | melden

Das Semikolon sorgt dafür, dass folgendes ausgeführt wird, wenn "True": Nichts.
Und darauf folgt, dass jede (numerische) Eingabe die Schleife beendet.
private Nachricht | Beiträge des Benutzers
Taipi88
myCSharp.de - Member

Avatar #avatar-3220.jpg


Dabei seit:
Beiträge: 1044
Herkunft: Mainz

beantworten | zitieren | melden

Zitat von Jamikus
Das Semikolon sorgt dafür, dass folgendes ausgeführt wird, wenn "True": Nichts.
Und darauf folgt, dass jede (numerische) Eingabe die Schleife beendet.

Urgh - hast Recht - hatte das Semikolon bei meinem ersten Test direkt gestrichen, weil's nicht hingehört und beim zweiten Test direkt eine höhere Zahl eingegeben. (Hab so nen Fehler noch nie gesehen)
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5983
Herkunft: Leipzig

beantworten | zitieren | melden

Wenn ein Programm nicht tut, was es eigentlich tun sollte, kann man immer den Debugger verwenden, um den Programmablauf nachzuvollziehen: [Artikel] Debugger: Wie verwende ich den von Visual Studio?
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
M.L.
myCSharp.de - Member



Dabei seit:
Beiträge: 265

beantworten | zitieren | melden

Der Hinweis von wg. Debugger gilt für VS, vielleicht nicht für Sololearn
Aber zwecks eines Erfolgserlebnisses (vorige Hinweise wurden eingearbeitet):

 static void Main(string[] args)
        {
            Console.WriteLine("Bitte Wunschpreis eingeben :");
            int maxBid = Convert.ToInt32(Console.ReadLine());
               //gilt nur für (negative) Ganzzahlen, ebenso die Gebote
            while (true)
            {
                Console.WriteLine("Bitte ihr Gebot eingeben: ");
                string ins = Console.ReadLine();
                int Bid = Convert.ToInt32(ins);

                if (Bid > maxBid) 
                {
                    Console.WriteLine("Sold: " + Bid);
                    Console.WriteLine("Enter drücken zum Beenden");
                    Console.ReadLine();
                    break;
                }
            }  
Goalkicker.com
DNC Magazine for .NET Developers,
.NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray ;-)
private Nachricht | Beiträge des Benutzers
AnoriOne
myCSharp.de - Member



Dabei seit:
Beiträge: 2
Herkunft: Berlin

Themenstarter:

beantworten | zitieren | melden

Debuggen in SoloLearn ist tatsächlich eher rudimentär. Es sagt mir nur, wenn und wo offensichtliche Fehler im Code sind.

Aber die richtige Ausführung - wie es mein Lernprogramm erwartete - lag tatsächlich nur am Semikolon hinter der if-Anweisung. Und natürlich das fehlende Leerzeichen in der Ausgabe.


static void Main(string[] args)
        {
            
            int maxBid = Convert.ToInt32(Console.ReadLine());

            //your code goes here
            
                 while(true)
                   {
                   string insert = Console.ReadLine();
                   int Bid = Convert.ToInt32(insert);
                     
                     if (Bid > maxBid)
                     {
                     Console.WriteLine("Sold: " + Bid);
                     break;
                     }
                   }
            
        }

Danke für die Hilfe. Es ist am Anfang immer etwas schwierig, sich in eine neue Materie einzudenken. Aber wenn Dinge dann funktionieren wie gedacht, ist es ein riesen Spass :)
Neuling in C#
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1892
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

Als kleiner Tipp.
Für diesen Fall nimmt man eigentlich eine do...while Schleife.
Dadurch muss der Durchlauf erst einmal gemacht werden, also die Eingabe erfolgen.
Wenn dann bei der ersten Eingabe der Wert Max entspricht, erledigt sich die Schleife selbst.
Ansonsten würde er den nächsten und übernächsten Ansatz nehmen.
Dadurch hast du dann auch gleich anstelle einer while(true) eine saubere do...while Schleife.

T-Virus
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers