Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: StrikeOne en 25 Febrero 2012, 19:58 pm



Título: Porque el ciclo no se sigue ejecutado?
Publicado por: StrikeOne en 25 Febrero 2012, 19:58 pm
Hola, tengo una pregunta:

Código:
#include <stdio.h>

int prueba (long);

int main ()

{
    prueba(120);
    return 0;
   
}

int prueba(long a)
{
   // retorna prueba

   int b = 1, c; // alguito, pruebate
 
   for (c = 2; b && c <= a / 2; c++)
   {
       printf("Valores: A---> %i, B ---> %i, C----> %i\n", a, b, c);
      if (a % c == 0)
      {
           
            b = 0;
}
}

  printf("\n\nValores finales, B ---> %i, A ---> %i, C ----> %i", b, a, c);
   return b;
}

Porque el programa solo devuelve los Valores iniciales y los finales una vez?

Porque el ciclo for no se sigue ejecutando?

No se supone que cuando C valga 3, la condicion sera que si 0 && 3 <= 60 ... Entonces ..

No deberia seguir ejecutandose el codigo?

Gracias!


Título: Re: Porque el ciclo no se sigue ejecutado?
Publicado por: satu en 25 Febrero 2012, 21:43 pm
Hola

Cuando entra al for la primera vez los valores de las variables son:
a - 120
b - 1
c - 2

y lo primero que hace es imprimir sus valores (valores iniciales). Después tienes un if que comprueba si a % c == 0, que si supieras lo que significa % sabrías que sí se cumple, entonces entra en el if y al asignar 0 a la variable 'b' deja de cumplirse la condición del for, por lo que sale del for y se imprimen los valores finales.

Léete un buen libro de C/C++.

Para saber para qué sirve el operador % puedes leer este (http://foro.elhacker.net/programacion_cc/c_linux_explicacion_de_codigo_principiante-t351953.0.html;msg1712823#msg1712823) post.

Sería bueno que hicieras una traza con papel y boli de tu programa para que veas la ejecución del programa y dónde entra y tal.

Saludos


Título: Re: Porque el ciclo no se sigue ejecutado?
Publicado por: StrikeOne en 25 Febrero 2012, 23:12 pm
Hola

Cuando entra al for la primera vez los valores de las variables son:
a - 120
b - 1
c - 2

y lo primero que hace es imprimir sus valores (valores iniciales). Después tienes un if que comprueba si a % c == 0, que si supieras lo que significa % sabrías que sí se cumple, entonces entra en el if y al asignar 0 a la variable 'b' deja de cumplirse la condición del for, por lo que sale del for y se imprimen los valores finales.

Léete un buen libro de C/C++.

Para saber para qué sirve el operador % puedes leer este (http://foro.elhacker.net/programacion_cc/c_linux_explicacion_de_codigo_principiante-t351953.0.html;msg1712823#msg1712823) post.

Sería bueno que hicieras una traza con papel y boli de tu programa para que veas la ejecución del programa y dónde entra y tal.

Saludos

Hola!

Gracias por tu respuesta! Sabia lo que hacia el programa, lo unico que pasaba era que tenia un mal concepto de como funcionaba el operador &&.

Despues leyendo me entere que al asignar a b el valor de 0, cuando vuelve al for la condicion es falsa y por ende sale de este.

Gracias por la explicacion ^^