Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: sora_ori en 15 Abril 2013, 10:25 am



Título: Programa en C (Pares e Impares)
Publicado por: sora_ori en 15 Abril 2013, 10:25 am
Muy bueas, estoy haciendo un programa en C con estás características. Échenle un vistazo los más entendidos en C para ver que se puede corregir.



• pida dos números por teclado
• Si los dos son pares, escribirá la suma
• Si los dos son impares, y diferentes, escribirá el resto del primero respecto al segundo
• Si alguno de ellos es mayor de 10, escribirá el valor del mayor
• Si ambos son mayores de 20 escribirá el valor del menor

NOTA: Los supuestos anteriores son independientes unos de otros

• Punto extra: Escribirá un mensaje por pantalla si los números elegidos no cumplen ninguno de los supuestos indicados.


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int main(){
  6.    int num1;
  7.    int num2;
  8.    int suma;
  9.    int resta;
  10.  
  11.    printf("Escribe un numero: ");
  12.    scanf("%d",&num1);
  13.    printf("Escribe otro numero: ");
  14.    scanf("%d",&num2);
  15.  
  16.    if ((num1 % 2 == 0) & (num2 % 2 == 0)){
  17.              printf("\nEl numero es par");
  18.              suma = num1 + num2;
  19.              printf("\nLa suma de los dos numeros pares es: %d",suma);
  20.    }
  21.  
  22.    else{
  23.         printf ("\nNo es par");
  24.         resta = num1 - num2;
  25.         printf("\nLa resta de los dos numeros impares es: %d",resta);
  26.    }
  27.  
  28.  
  29.  
  30.  
  31.   /* MAYOR DE 20 */
  32.      if ((num1 > 20) & (num2 > 20)){
  33.             printf("\nLos dos numeros son mas grande de 20");
  34.  
  35.             if (num1 < num2)
  36.                printf("\nEl numero mas pequeño es: %d",num1);
  37.             else printf("\nEl numero mas pequeño es: %d",num2);
  38.   }
  39.  
  40.  
  41.  
  42.  
  43.    /* MAYOR DE 10 */
  44.   if ((num1 > 10) | (num2 > 10)){
  45.             printf("\nAlguno de los nombres es mayor a 10");
  46.             if (num1 > num2)
  47.                      printf("\nEl numero mas grande es: %d",num1);
  48.                      else printf("\nEl numero mas grande es: %d",num2);
  49.  
  50.   }
  51.  
  52.  
  53.  
  54.    printf("\n\n");
  55.  system("pause");
  56.  return 0;
  57. }
  58.  


Título: Re: Programa en C (Pares e Impares)
Publicado por: leosansan en 15 Abril 2013, 15:40 pm
Muy bueas, estoy haciendo un programa en C con estás características. Échenle un vistazo los más entendidos en C para ver que se puede corregir.



• pida dos números por teclado
• Si los dos son pares, escribirá la suma
Si los dos son impares, y diferentes, escribirá el resto del primero respecto al segundo
• Si alguno de ellos es mayor de 10, escribirá el valor del mayor
• Si ambos son mayores de 20 escribirá el valor del menor

...............................................
   
    if ((num1 % 2 == 0) & (num2 % 2 == 0)){
              printf("\nEl numero es par");
              suma = num1 + num2;
              printf("\nLa suma de los dos numeros pares es: %d",suma);
    }

    else{ /*<=====AQUI ESTA EL ERROR*/
         printf ("\nNo es par");
         resta = num1 - num2;
         printf("\nLa resta de los dos numeros impares es: %d",resta);
    }
   
   ...................................
   

El error lo cometes al considerar que si no son pares "los dos" son impares los dos, cuando podría ser uno impar y el otro par.

Es decir, ese "else" tienes que cambiarlo por un if que indique que ambos son impares.

Saluditos!. ....
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)