Analyze whether the number is even or odd, and which of the numbers is larger

0

setlocale(LC_ALL,"Portuguese");

int num1,num2;

printf("\nInforme os números: ");
scanf ("%i""%i",&num1,&num2);

if (num1 % 2 == 0){
    printf ("\nO número %i é par e",num1);
}else {
    printf("\nO número %i é impar e",num1);
}
if (num1>num2){
    printf (" é o número é o maior");
}else {
    printf(" é o número é o menor");
}



if (num2 % 2 == 0){
    printf ("\nO número %i é par e",num2);
}else {
    printf("\nO número %i é impar e"),num2;
}
if (num2>num1){
    printf (" é o número é o maior");
}else {
    printf(" é o número é o menor");
}

When I put 2 and 3 of an error in 3 and it shows several random numbers but the result is correct, already when I put 4 and 6 it says that 4 is even, could you tell me what I'm doing wrong?

    
asked by anonymous 13.05.2016 / 23:41

2 answers

2

In the statement where you display the variable num2 when it was odd there was an error in the call of the print() function, see where I changed:

#include <stdio.h>

int main(void)
{

    int num1,num2;

    printf("\nInforme os números: ");
    scanf ("%i""%i",&num1,&num2);

    if (num1 % 2 == 0){
        printf ("\nO número %i é par e",num1);
    }else {
        printf("\nO número %i é impar e",num1);
    }
    if (num1>num2){
        printf (" é o número é o maior");
    }else {
        printf(" é o número é o menor");
    }



    if (num2 % 2 == 0){
        printf("\nO número %i é par e",num2);
    }else {
        printf("\nO número %i é impar e",num2); //<----- mudei qui
    }
    if (num2>num1){
        printf (" é o número é o maior");
    }else {
        printf(" é o número é o menor");
    }

    return 0;
}

The previous form was bringing garbage, so it was necessary to rewrite this routine for:

printf("\nO número %i é impar e",num2);

So you can check the validation result.

    
14.05.2016 / 00:31
0

You can greatly simplify your code, see:

#include <stdio.h>
#include <stdlib.h>

#define eh_par( n )      ( ( n % 2 ) ? 0 : 1 )
#define comparar( a, b ) ( ( a == b ) ? 0 : ( ( a > b ) ? 1 : -1 ) )

int main( int argc, char * argv[] )
{
    int a = 0;
    int b = 0;

    printf("a: ");
    scanf( "%d", &a );

    printf("b: ");
    scanf( "%d", &b );

    switch( comparar( a, b ) )
    {
        case -1: printf( "%d eh menor que %d\n", a, b ); break;
        case  0: printf( "%d eh igual a %d\n", a, b ); break;
        case  1: printf( "%d eh maior que %d\n", a, b ); break;
    }

    printf("%d eh um numero %s\n", a, eh_par(a)?"PAR":"IMPAR" );
    printf("%d eh um numero %s\n", b, eh_par(b)?"PAR":"IMPAR" );

    return 0;
}

/* fim-de-arquivo */

Output:

$ ./teste
a: 5
b: 8
5 eh menor que 8
5 eh um numero IMPAR
8 eh um numero PAR

$ ./teste
a: 9
b: 4
9 eh maior que 4
9 eh um numero IMPAR
4 eh um numero PAR

$ ./teste
a: 5
b: 5
5 eh igual a 5
5 eh um numero IMPAR
5 eh um numero IMPAR

I hope it helps!

    
14.05.2016 / 01:52