Ver Mensaje Individual
  #6 (permalink)  
Antiguo 10/09/2015, 09:04
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 2 meses
Puntos: 204
Respuesta: Leer un número entero de dos dígitos y determinar si es primo y además si

Lo primero antes de nada es que no estás siguiendo la estructura que te he propuesto.

Clase básica de condicionales

El siguiente if ejecutará codigo si condicion es cierta.
Código C:
Ver original
  1. if( condicion )
  2. {
  3.    codigo
  4. }

Se entiende que la condición de un if es cierta SIEMPRE que ésta no valga 0, es decir:

Código C:
Ver original
  1. int var = 12;
  2.  
  3. // var no vale 0
  4. // --> se ejecuta codigo
  5. if( var )
  6.   codigo;
  7.  
  8. // es una asignación, no una comparación y, después de eso var = 23 != 0
  9. // --> se ejecuta codigo
  10. if( var = 23 )
  11.   codigo;
  12.  
  13. // -345 != 0
  14. // --> se ejecuta codigo
  15. if( -345 )
  16.   codigo;
  17.  
  18. int* ptr = 0;
  19.  
  20. // este if consulta la posición de memoria apuntada por el puntero... que vale 0
  21. // --> NO se ejecuta codigo
  22. if( ptr )
  23.   codigo;
  24.  
  25. var = 0;
  26. ptr = &var;
  27.  
  28. // se vuelve a consutlar la posicion de memoria apuntada, ya no vale 0
  29. // --> se ejecuta codigo
  30. if( ptr )
  31.   codigo;
  32.  
  33. // se consulta el valor almacenado en la posicion apuntada.
  34. // actualmente var=0, luego *ptr=0
  35. // --> NO se ejecuta codigo
  36. if( *ptr )
  37.   codigo;

por otro lado tenemos la estructura if-else:

Código C:
Ver original
  1. if( condicion )
  2.   codigo1;
  3. else
  4.   codigo2;

Esta estructura funciona así: si se cumple la condición se ejecuta codigo1, en caso contrario se ejecuta codigo2. Esto quiere decir que NUNCA se podrán ejecutar codigo1 y codigo2 a la vez.

Esta estructura se puede agrupar en varias secuencias if-else:

Código C:
Ver original
  1. if( condicion1 )
  2.   codigo1;
  3. else if( condicion2 )
  4.   codigo2;
  5. else if( condicion3 )
  6.   codigo3;
  7. else
  8.   codigo4;

Si se cumple la primera condición, se ejecutará codigo1, en caso contrario se comprueba la segunda condición, si se cumple se ejecuta codigo2, en caso contrario...

Un pequeño inciso llegados a este punto, el último else no es obligatorio ponerlo, todo depende de si necesitas o no realizar alguna acción en el caso de que no se cumpla ninguna condición.

Clase acelerada de números negativos

Un número cualquiera es negativo sí y solo sí es inferior a 0.

Ejemplo:
Código C:
Ver original
  1. int n;
  2. if( n < 0 )
  3.   // El numero es negativo
  4. else
  5.   // El numero es 0 o positivo

otra forma:
Código C:
Ver original
  1. int n;
  2. if( n >= 0)
  3.   // El numero 0 o positivo
  4. else
  5.   // El numero es negativo

otra más:
Código C:
Ver original
  1. int n;
  2. if( i < 0 )
  3.   // El numero es negativo
  4. else if( i > 0 )
  5.   // El numero es positivo
  6. else
  7.   // El numero es 0

y no sigo que si no el mensaje queda demasiado guarro.

Un saludo.