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) {
/*......./
}
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:
for (int i = 0; i != 10; ++i)
cout << "i == " << i << endl;
Un saludo
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.
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
¡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:
#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.
Creo que quieres hacer algo así no?
#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.
#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;
}
};
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