Si lo que buscas es que i crezca es asi
Este va de 0 a 9, si quieres que llegue a 10 puedes usar i<=10 o bien i<11.
for (i=0; i<10; i++) {
//lo que corresponda}
Si lo que buscas es decrementar es asi
for (i=10; i>=0; i--) {
//lo que corresponda}
Este va de 10 a 0 inclusivo, si queres que no llegue a 0 entonces i>0 o mayor que n donde N < 10.
Se entiende? Tambien si i es int, puedes llegar hasta valores negativos.
Creo que lo que quieres es programar un bucle for que pueda tanto incrementar como decrementar. Eso en la sentencia del for es imposible ya que solo puede hacer una de las dos. A menos que establezcas una condición dentro del for que haga decrementar la i. Me explico:
for (i=0;i<10;i++){
if(num%2==0)
i--;
}
Este ejemplo simple que he puesto preguntaría si la variable num (me la he inventado) es par. Si es así, entonces i decrementa una unidad, pero mientras el bucle for sigue funcionando.
Finalmente parece que hay varias formas, e incluso se me ocurre alguna más
for(int i= 0; i<20; i+= incremento){
if(condición) incremento=-1;
else incremento=1;
....
}
Lo que no encuentro es una situación en la que este lío pueda ser útil
Y.... cuando el que trae el problema no se explica bien, ocurre esto.
Nosotros tiramos posibles soluciones y luego resulta que no tienen nada que ver y que el quería expresar otra cosa.
Un ciclo que puede subir y bajar agarrado de los pelos, y como dice Noter, no se donde se puede dar,claro que puede ocurrir pero tambien puede haber otras formas de encarar el problema.
Siempre las hay.
A todo esto el que hiz la consulta no aporta nada, si estan bien o estan mal todas o alguna de las posibles soluciones.
Hola,
Tal vez lo que le interesaba era el texto de nuestras respuesta, para copiar y pegar, y presentarlo al profe... Tarea hecha! La vida (y la crisis) ya le irá enseñando jeje
80% de las preguntas de este foro no tienen un solo comentario posterior del autor de dicha pregunta.
Es como que pasan, tiran algo y luego no saben ni como llegaron o no les interesa, una pena!!
Perdón por llegar tarde, he estado liado. Antes de nada daros las gracias por vuestra ayuda. Expongo el problema real, es un ejercicio para los alumnos, le llamamos pingpong, este es:
8 leds y dos pulsadores (uno para cada jugador), los leds simulan la pelota, cuando el jugador 1 pulse su pulsador la luz se dirige hacia el jugador dos, y si este pulsa el suyo los leds se van iluminando, como si de una pelota se tratara hacia el jugador 1. Aquí tenéis el bucle, una vez va hacia delante del led 1 al 8, y otras hacia detrás del led 8 al 1. Quiero hacerlo con un solo bucle.
Fantástico hubiera sido que explicaras esto el día 1, porque ayuda a la comprensión del problema y nos permite sugerir otras alternativas.
Por ejemplo, no le veo la necesidad de meter en el mismo bucle las condiciones ascendente descendente.
Tienes que leer dos pines digitales.
Uno cuando se presiona incrementa i y el otro lo decrementa.
Controlo lo máximos y minimos posibles 8 y 1 y ya esta.
algo asi
boolean b1State = false;
boolean b2State = false;
void loop(){
// leo el estado del boton izq a dere
button1 = digitalRead(buttonPin1);
button2 = digitalRead(buttonPin2); // Previo define ambos pines
if (button1 == HIGH) {
if (!b1State) // solo incremento si vengo de un 0->1
i++;
b1State = true;
if (i>8) i = 8;
} else b1State = false;
if (button2 == HIGH) {
if (!b2State) // solo incremento si vengo de un 0->1
i--;
if (i>1) i = 1; // los limites 1 u 8 los controlas tu.
} else b2State = false;
// aca manejas los leds
}
Te das cuenta, no hace falta un ciclo for con crecimiento o decrecimiento.