[Solucionado] Modificar el incremento del bucle for

Iniciado por Caster, 21 Febrero 2012, 10:12 AM

0 Miembros y 1 Visitante están viendo este tema.

Caster

Hola a todos, me ha surgido esta duda. No es para aplicar a ningun prorama pero siento curiosidad igualmente.

Un bucle for simple:

for (x = 1; x <= y; x++) {

/*......./

}


Cada vez que se ejecuta, el valor de x aumenta en 1, pero, sería posible hacer esto para cambiar el valor del incremento:

for (x = 1; x <= y; x += 2) {

/*......./

}


O también así:

for (x = 1; x <= y; x = x + 2) {

/*......./

}

rir3760

Un bucle "for" tiene la estructura:
for (expr; expr; expr)
   sentencia

A la ultima expresión se le conoce comúnmente como "incremento" porque es en ella donde se realiza el incremento del contador (la variable que controla la ejecución del bucle).

En otras palabras puedes colocar ahí cualquier expresión, por supuesto debes verificar que en algún momento la condición del bucle (segunda expresión) sea falsa para que este termine.

En C99 y C++ se puede sustituir la primera expresión por una declaración, por ejemplo:
Código (cpp) [Seleccionar]
for (int i = 0; i != 10; ++i)
   cout << "i == " << i << endl;


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Caster

He entendido mal o tu te has explicado mal. Lo que quiero saber yo es si es posible que en vez de incrementar en 1 como pones tu en el ejmplo, que se puede incrementar en cualquier valor.

Xandrete

Cita de: |Demon| en 21 Febrero 2012, 15:08 PM
He entendido mal o tu te has explicado mal. Lo que quiero saber yo es si es posible que en vez de incrementar en 1 como pones tu en el ejmplo, que se puede incrementar en cualquier valor.

Ni te ha entendido mal, ni te has explicado mal. Su respuesta es totalmente acertada.

for(expr;expr;expr) donde expr puede ser cualquier expresión. Una respuesta más específica: puedes incrementarlo sumándole dos unidades, multiplicarlo por dos, etc. O incluso puedes decrementarlo. O hacer su logarítmo, etc. ¡Lo que quieras!  ;)

Saludos

soyloqbuskas

¡Buenas |Demon| !

Creo que no has entendido bien a rir3760.

Como bien te han dicho, un bucle for() tiene esta estructura
for (expr1; expr2; expr3)
  sentencia


Donde....
   expr1 = asignacion del valor inicial (ej.: i=3)
   expr2 = comparacion (ej.: i<10 ó i*3<27, etc)
   expr3 = incremento de la variable (i++, o i=+2)

Toma un codigo de ejemplo:
Código (c_mac) [Seleccionar]

#include<stdio.h>

int main(){
   int i=0;
   for(i=1;i*3<27;i+=2) printf("hola mundo\n");
   
   getchar();
   return 0;    
}


Este tipo de dudas se solucionan probando. Te haces un programita como el que te he dejado e intentas probar tu idea, y si funciona bien y si no, es que no se puede hacer.

Un saludo.
"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw

anonimo12121

Creo que quieres hacer algo así no?

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;
int main(int argc,char *argv[]){
   for(int x=1,i=0;i<100;i= i+x){
       if(i==50)x=2;
       cout << i << endl;
   }
};


si en vez 1 quieres que sea que vaya aumentando por ejemplo de 2 en 2.
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
int main(int argc,char *argv[]){
   for(int i=0;i<100;i=i+2){ // i=i+2 es igual a  i+=2
       cout << i << endl;
   }
};
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

Caster

Ok, ahora lo entiendo mucho mejor, gracias a todos por las aclaraciones.

@Dr.Hacker++: Era en C, pero no importa que lo he entendido igual.

Gracias a todos