Pregunta

¿Cómo hacer un bucle repeat-until en C ++? A diferencia de un estándar, mientras que o bucle For. Tengo que comprobar la condición al final de cada iteración, en lugar de al principio.

¿Fue útil?

Solución

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

Otros consejos

Cuando desee comprobar el estado al inicio del bucle, simplemente negar la condición de un bucle estándar while:

while(!cond) { ... }

Si lo necesita, al final, utilice un do ... <=> bucle y niega la condición:

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

Se puede usar macros para simular la repetición, hasta que la sintaxis.

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

Por ejemplo, si usted quiere tener un bucle que se detuvo cuando se ha contado todas las personas en un grupo. Vamos a considerar el valor de X sea igual al número de las personas en el grupo, y el contador se utiliza para contar todas las personas en el grupo. Para escribir el

  

while (condición!)

el código será:

  

int x = personas;

     

int contador = 0;

     

mientras (x! = Contador)

     

{

     

contador ++;

     

}

     

return 0;

Sólo tiene que utilizar:

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

Entonces, ¿qué es esto, se mueve a su 'comprobar si hay condiciones' parte hasta el final, ya que el while es al final. Por lo que sólo se comprueba la condición después de ejecutar el código, al igual que cómo quiere que

Repetir se supone que es un simple bucle n veces bucle ... conditionless una versión de un bucle.

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

repeat(10) {
    //do stuff
}

También se puede también agregar un barce extra para aislar la variable i aún más

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

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

[editar] Alguien envió una preocupación acerca de pasar un algo que no sea un valor, como una expresión. simplemente cambiar a bucle para correr hacia atrás, haciendo que la expresión a ser evaluado sólo una vez

#define repeat(n) { for (int i = (n); i > 0; --i)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top