¿Cómo se hace una repetición hasta el lazo en C++? A diferencia de un ciclo While o For estándar. Necesito verificar la condición al final de cada iteración, en lugar de al principio.¿Cómo se hace una repetición hasta el lazo en C++?
Respuesta
do
{
// whatever
} while (!condition);
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
. .. while
bucle y niega la condición:
do { ... } while(!cond);
Se podría utilizar macros para simular la repetición, hasta que la sintaxis.
#define repeat do
#define until(exp) while(!(exp))
Esto es exactamente lo que estaba buscando. No estoy seguro de cómo funciona el "exp". ¿Es un comodín genérico? ¡Gracias! –
@ Ace.C Es un nombre de argumento. El segundo '# define' crea una macro, que actúa como una función. Entonces, en este caso, '#define until (exp)' es una macro llamada 'until' que toma un parámetro' exp', y se expande a 'while (! (Exp))'. –
Gracias @ Conor.O, ¿hay algún artículo u otra publicación sobre este tema al que me puedas vincular? Tengo problemas para encontrar buenos recursos sobre cómo hacer este tipo de macros –
Por ejemplo, si desea tener un bucle que se detenga cuando haya contado a todas las personas de un grupo. Consideraremos que el valor X es igual al número de personas en el grupo, y el contador se usará para contar a todas las personas del grupo. (! Condiciones) para escribir el
mientras
el código será:
int x = pueblo;
int counter = 0;
mientras que (x = contador!)
{
contador ++;
}
return 0;
sólo tiene que utilizar:
do
{
//enter code here
} while (!condition);
Así que lo que hace es, se mueve a su 'comprobar si hay condiciones' parte hasta el final, ya que el while
es al final. Por lo tanto, solo comprueba la condición después de ejecutar el código, al igual que la forma en que lo desea
Se supone que la repetición es un bucle simple n veces el bucle ... una versión sin condiciones de un bucle.
#define repeat(n) for (int i = 0; i < n; i++)
repeat(10) {
//do stuff
}
que también puede también añadir una 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;
- 1. C Lazo principal sin 100% CPU
- 2. ¿Eliminar la repetición en el código C++?
- 3. ¿Cómo se hace una serie de estructuras en C?
- 4. ¿Cómo se hace la exponenciación en C?
- 5. C++ iterador en trampas de lazo?
- 6. Objective-C ejecutar lazo para detener y reiniciar el método?
- 7. ¿Cómo se hace el polimorfismo en Ruby?
- 8. ¿Cómo se lee scanf hasta EOF en C?
- 9. repetición de solicitud de jQuery JSON hasta que la condición se cumple
- 10. Cómo bloquear hasta que se active un evento en C#
- 11. ¿El lazo cerrado es malo?
- 12. ¿Cómo bloquear una operación hasta que se cumpla una condición?
- 13. de lectura hasta el final de una línea en C++
- 14. C# Centralizar repetición de VIewData en MVC
- 15. C# El programa funciona bien, hasta que se minimice
- 16. ¿Cómo se hace el módulo o el resto en Erlang?
- 17. ¿Cómo se hace delegados en línea en vb.net como C#?
- 18. ¿Cómo se hace la evaluación dinámica de scripts en C#?
- 19. ¿Qué hace '&' en una declaración de C++?
- 20. ¿Cómo se hace una animación de UIBarButtonItem?
- 21. C++ Leer archivo hasta el espacio
- 22. Comportamiento extraño de la función Sueño() utilizado en la repetición hasta en Delphi
- 23. ¿Cuándo es efectivo el desenrollado de lazo?
- 24. SQL Server para cada lazo
- 25. Cómo forzar LostFocus cuando se hace clic en el botón
- 26. ¿Cómo se hace programación genérica en Haskell?
- 27. Repetición de una lista en Scala
- 28. ¿Cómo se hace el código reutilizable?
- 29. C# ¿qué hace el operador == en detalle?
- 30. ¿Cómo se hace el multi-arrendamiento en el Proyecto Orchard
Uhh ... Esto es bastante triste. Emil presionó enviar antes de lo que lo hice ... El "aceptado" debería ir a él ... – Adrien
Tienes menos representante, y es una pregunta extremadamente simple, así que con mucho gusto te la daré. :) –
Como dijo jalf, sin embargo: si quieres un bucle do hasta que no sea do while, deberás negar la condición. –