Hasta aquí quería llegar yo señor profe, si yo pongo en una frase:
No es par ni mayor que 10
o
No es par y mayor que 10
usando este ejemplo que pusiste:
Código: Seleccionar todo
if (!( (numero % 2 == 0) && (numero > 10)))
printf("No es par ni mayor que 10\n");
Si no se cumple alguna de las 2 el programa deveria no imprimir el mensaje no? lo que pasa es que si pongo un 23 si lo imprime mira:
Código: Seleccionar todo
Introduce un número: 23
No es un nueve
Es mayor o igual que 10
Es multiplo de 5 ó es menor o igual a 100
No es par ni mayor que 10
/* vale par no es, pero si que es mayor que 10 si cambio la frase da igual porque si pongo, no es par Y mayor que 10 me pasa lo mismo pero al contrario si pongo un 1 me dice que es mayor que 10 en vez de ignorar ese printf*/
Pero al contrario si pongo un 26 ignora este printf mira:
Código: Seleccionar todo
Introduce un número: 26
No es un nueve
Es mayor o igual que 10
Es multiplo de 5 ó es menor o igual a 100
26 25 24 23 22 21 20 19 18 17 16 15 14 13
23 es ambas cosas: mayor que 10 e impar. Por tanto 23 no es par y mayor que 10 (no cumple las 2 condiciones). 24 sería mayor que 10, pero par. 2 sería par, pero menor que 10.
Para que me entiendas mejor, esto no es un Y coloquial, que usamos cuando hablamos, es un Y lógico: dadas 2 expresiones lógicas A y B (que pueden ser verdaderas o falsas), A && B sólo es verdad en el caso en que ambos A y B sean verdad, siendo falso en cualquier otro caso. Con los ejemplos arriba citados:
(23 > 10) && (23 % 2 == 0) -> V && F -> F
(24 > 10) && (24 % 2 == 0) -> V && V -> V
(2 > 10) && (2 % 2 == 0) -> F && V -> F
Todo lo que me cuentas aquí lo entiendo perfectamente, lo que no entiendo es que si una de las dos es Falsa porque imprime el mensaje en pantalla, porque que me diga que 23 no es mayor que 10 no puede ser.
PD: y ya de paso mi primer ejercicio.
Código: Seleccionar todo
#include <stdio.h>
int main (int argc, char *argv[])
{
int numero;
system("clear");
printf("Introduce un número entre 0 y 20... ");
scanf("%d", &numero);
if (numero % 2 == 0 & numero < 20)
printf("Es par menor que 20\n ");
if (numero % 2 == 0 & numero == 20)
printf("Es par igual que 20\n");
if (numero % 2 == 1 &numero <= 20)
printf("es impar\n");
if (numero > 20)
printf("entre tú y yo ¿sabes leer?\n");
return 0;
}