Porque el ciclo no se sigue ejecutado?

Iniciado por StrikeOne, 25 Febrero 2012, 19:58 PM

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

StrikeOne

Hola, tengo una pregunta:

#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!

satu

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 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
Breakbeat como forma de vida

StrikeOne

Cita de: 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 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 ^^