1
resposta

Programa Par/Impar

Oi, to tentando fazer um programa Par e Impar que imprima separadamente os números impares e pares que o usuario digitar, ate a pessoa digitar 0, ai o programa para

Mas o problema é que parece que as variaveis são lidas e guardadas , mas nenhuma operação é feita, porque esta imprimindo os numeros na ordem que foram digitados :/

Alguém consegue me ajudar nisso?

Codigo:

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#define MAX 1

int main() { int contpar =0; int par[MAX]; int contimpar=0; int impar[MAX]; int i; int num;

do {
    for(i=0;i<MAX; i++)
{
    printf("digite um numero ou 0 para finalizar a entrada de dados: ");
    scanf("%d",&num);

}
    for(i=0;i<MAX; i++)
    {
        if (num/2==0)
        {
         par[contpar] = num;
         contpar++;

        } else {
        impar[contimpar]=num;
        contimpar++;
    }

    }

} while (num!=0);

if(num==0)
{
    printf("\n\t imprimindo os valores impares e pares digitados...\n");

    for (i=0; i<contimpar;i++)
    {
        printf("\n%d", impar[i]);
    }
    for(i=0; i<contpar;i++)
    {
        printf("\n%d",par[i]);
    }
}

}

1 resposta

Olá,

Para testar um número e saber se é PAR ou IMPAR, em programação nós comparamos o resto da divisão por dois, se é zero:

if ( (num % 2) == 0) {
  // É PAR
} else {
  // É IMPAR
}

Fora isso, o teu código ficou um pouco confuso, você colocou coisas a mais ali que poderiam sair, como aqueles dois FOR Você também misturou C e C++. Não é errado, mas é muito melhor quando usar C++ fazer todo em C++, e se for fazer em C, fazer ele todo em C.

Seguindo sua lógica em fiz um exemplo de solução em C++ para você análisar:

#include <iostream>

#define MAX 10

int main()
{
    int contpar = 0; 
    int par[MAX]; 
    int contimpar = 0; 
    int impar[MAX];    
    int numero = 0;

    while (true) {
        std::cout << "digite um numero ou 0 para finalizar a entrada de dados: ";
        std::cin >> numero;

        if (numero) {
            if ((numero % 2) == 0) {
                par[contpar] = numero;
                contpar++;
            }
            else {
                impar[contimpar] = numero;
                contimpar++;
            }
        }
        else {
            break;
        }
    }

    std::cout << "\n\t imprimindo os valores impares e pares digitados..." << std::endl;

    std::cout << "Numeros IMPARES:  " << std::endl;
    for (int i = 0; i < contimpar; i++) {
        std::cout << impar[i] << " ";
    }

    std::cout << std::endl;
    std::cout << "Numeros PARES:   " << std::endl;
    for (int i = 0; i < contpar; i++){
        std::cout << par[i] << " ";
    }
    std::cout << std::endl;
}