Frage

Wie macht man ein Repeat-Until-Schleife in C ++? In Bezug auf einen Standard-Gegensatz Während oder For-Schleife. Ich brauche den Zustand am Ende jeder Iteration zu überprüfen, anstatt am Anfang.

War es hilfreich?

Lösung

do
{
  //  whatever
} while ( !condition );

Andere Tipps

Wenn Sie den Zustand zu Beginn der Schleife überprüfen mögen, zunichte macht einfach die Bedingung auf einer Standard-while Schleife:

while(!cond) { ... }

Wenn Sie es am Ende benötigen, verwenden Sie eine do ... while Schleife und negiert die Bedingung:

do { ... } while(!cond);

Sie können Makros verwenden, die Repeat-bis-Syntax zu simulieren.

#define repeat do
#define until(exp) while(!(exp))

Für ein Beispiel, wenn Sie eine Schleife haben wollen, die gestoppt, wenn es alle Menschen in einer Gruppe gezählt hat. Wir werden der Wert X ist gleich die Anzahl der Personen in der Gruppe betrachten, und der Zähler wird verwendet, um alle Menschen in der Gruppe zu zählen. So schreibt die

  

while (! Bedingung)

wird der Code sein:

  

int x = Menschen;

     

int counter = 0;

     

while (x! = Zähler)

     

{

     

Zähler ++;

     

}

     

return 0;

Verwenden Sie einfach:

do
{
  //enter code here
} while ( !condition );

Also, was dies tut, ist, es bewegt sich Ihren ‚Check für Zustand‘ Teil bis zum Ende, da die while am Ende ist. So prüft er nur den Zustand, nachdem der Code ausgeführt wird, wie, wie Sie es wollen

Wiederholen Sie soll eine einfache Schleife n-mal Schleife sein ... eine bedingungslose Version einer Schleife.

#define repeat(n) for (int i = 0; i < n; i++) 

repeat(10) {
    //do stuff
}

Sie können auch hinzufügen, auch eine zusätzliche barce die Variable i noch mehr zu isolieren

#define repeat(n) { for (int i = 0; i < n; i++) 
#define endrepeat }

repeat(10) {
    //do stuff
} endrepeat;

[Bearbeiten] Jemand hat einen Besorgnis über ein etwas anderes ist als ein Wert vorbei, wie ein Ausdruck. nur in einer Schleife ändern rückwärts zu laufen, wodurch der Ausdruck nur einmal ausgewertet werden

#define repeat(n) { for (int i = (n); i > 0; --i)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top