Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: anonimo12121 en 30 Marzo 2011, 11:54 am



Título: Pequeña duda de este parámetro del for.
Publicado por: anonimo12121 en 30 Marzo 2011, 11:54 am
Hola quisiera saber que es lo que compara el segundo parámetro del for.

Código
  1. int main(int argc,char *argv[]){
  2.    char a[100];
  3.    gets(a);
  4.    for(int i=0;a[i];i++){
  5.        if(a[i]==' ')a[i]='_';
  6.    }
  7.    puts(a);
  8.    cin.get();
  9.    return 0;
  10. }


Título: Re: Pequeña duda de este parámetro del for.
Publicado por: d00ze13 en 30 Marzo 2011, 13:35 pm
pues creo que es que te hace el bucle mientras a contenga i
y como cuando el bucle llega al final de la cadena introducida hace que a contenga una barra baja con lo cual se sale del bucle porque a ya no va a contener un numero sino que tendra una baarra baja
nose si me explique bien xd


Título: Re: Pequeña duda de este parámetro del for.
Publicado por: d00ze13 en 30 Marzo 2011, 13:40 pm
por ejemplo si introduces la cadena hola, va a hacer esto
i=0;i[0];i++  // h
i=0;i[1];i++  // o
i=0;i[2];i++  // l
i=0;i[3];i++  // a

i=0;i[_];i++  // la barra baja y se sale del bucle ya que no cumple la condicion de que sea un entero


Título: Re: Pequeña duda de este parámetro del for.
Publicado por: Saberuneko en 30 Marzo 2011, 14:46 pm
El segundo parametro es la condicion de repetición. Basicamente, tal como aparece ahora, recorre el vector "a", siendo "i" la posición actual del mismo, tal como está, solo pararía con valor "0". (ya que C no tiene variables lógicas (booleanas), eso significa que el bucle parará cuando se encuentre con un "0" en el vector). <<Para C, todo es true, excepto el "0" que es considerado false>>

Dentro del bucle, lo que se hace, es sustituir los espacios en blanco " " por "_" según se encuentran.


Título: Re: Pequeña duda de este parámetro del for.
Publicado por: anonimo12121 en 30 Marzo 2011, 14:51 pm
Estaría bien ponerlo así?
Código
  1. #include <iostream>
  2. #include <sstream>
  3. using namespace std;
  4. int main(int argc,char *argv[]){
  5.    char a[100];
  6.    gets(a);//Leer lo que escribes y lo almacena en la variable
  7.    for(int i=0;a[i]!=0;i++){
  8.        if(a[i]==' ')a[i]='_';
  9.    }
  10.    puts(a);//muestra el contenido de la variable en la pantalla
  11.    cin.get();
  12.    return 0;
  13. }


Título: Re: Pequeña duda de este parámetro del for.
Publicado por: D4RIO en 30 Marzo 2011, 15:42 pm
También podrías decir que esto es válido:

Código
  1. int i=0;
  2.  
  3. if (0!=(i==0))

Lo que no significa que sea legible o simple, dejalo como estaba y recuerda que esta evaluando si ese caracter existe, o hay un cero en su lugar.


Título: Re: Pequeña duda de este parámetro del for.
Publicado por: Saberuneko en 31 Marzo 2011, 09:03 am
Si, tal como estaba, hacía exactamente lo mismo. Ya que las condiciones fijadas en los bucles siempre siguen las reglas cierto falso, por tanto, siempre que no sea "0" o ningún carácter, va a ser cierto, y continuar con el bucle.

De todos modos, sigue siendo correcto ponerlo de esa otra forma.


Título: Re: Pequeña duda de este parámetro del for.
Publicado por: anonimo12121 en 31 Marzo 2011, 10:18 am
OK ya se me a quedado claro el código lo cambie para entenderlo bien.