Announcement

Collapse
No announcement yet.

do..while schleife funktioniert nicht richtig.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • do..while schleife funktioniert nicht richtig.

    Hallo zusammen,
    ich habe folgende Schleife programmiert:
    [highlight=c++]
    //eine lokale Variable für die Größe
    Int32 groesse;
    Int32 anzahlWiederholungen=Convert::ToInt32(textBoxAnzah lWiederholungen->Text);
    Int32 geschwindigkeit=Convert::ToInt32(textBoxGeschwindi gkeit->Text);
    Int32 schritt=0;
    Int32 durchlauf=0;

    do
    {
    //labelDurchlauf->Text=Convert::ToString(durchlauf);
    zeichenflaeche->DrawEllipse(stift, panel1->ClientRectangle.Left + (groesse-schritt), panel1->ClientRectangle.Top + (groesse-schritt), panel1->ClientRectangle.Width - ((groesse-schritt) * 2), panel1->ClientRectangle.Height - ((groesse-schritt) * 2));
    schritt++;
    durchlauf++;
    System::Threading::Thread::Sleep(geschwindigkeit);
    //die Zeichenfläche löschen
    zeichenflaeche->Clear(panel1->BackColor);
    }while((durchlauf != anzahlWiederholungen) || (panel1->ClientRectangle.Height - ((groesse-schritt) * 2) <= panel1->ClientRectangle.Height));
    [/highlight]

    leider bricht sie nicht ab wenn durchlauf == anzahlWiederholungen ist. Lasse ich das || (Oder) und den hinteren Teil weg funktioniert es. Was ist da falsch?
    Vielen Dank

    Liebe Grüße
    Andreas Hafner

  • #2
    Auf was willst du denn genau testen?

    Das er nicht abbricht wenn der erste Teilausdruck falsch ist für 'oder' korrekt denn die weiteren Teile könnten ja wahr sein womit der Gesamtausdruck wahr wäre.
    Wolltest du vielleicht gar nicht 'oder' sondern 'und'?

    Comment


    • #3
      eigentliches Ziel soll sein das die Schleife abbricht wenn die Wunschanzahl durchläufe erreicht ist oder wenn die Grenzen des Zeichenfensters erreicht werden. Dann werd ich wohl eine if-Anweisung mit break benötigen oder??

      Comment


      • #4
        Nein, du musst nur die Bedingung richtig formulieren und zusammensetzen. Meine Vermutung:
        [highlight=c++]while((durchlauf < anzahlWiederholungen) &&
        (panel1->ClientRectangle.Height - ((groesse-schritt) * 2) <= panel1->ClientRectangle.Height));[/highlight]
        So interpretiere ich deine Aussage. Formuliere es doch so: "Die Schleife soll solange wiederholt werden, wie die Anzahl der Durchläufe noch nicht zu groß ist und der Bereich noch nicht überschritten wird."

        Jürgen

        Comment


        • #5
          Ahh ja Vielen Dank. Da hab ich echt total die Scheuklappen aufgehabt.

          Comment

          Working...
          X