Ir ao conteúdo
  • Cadastre-se

(Ajuda)algoritmo impar ou par sem usar mod ou %.


uberacy

Posts recomendados

preciso fazer uma algoritmo que diga se o numero é impar ou par sem usar as funções mod ou %.

por favor me ajudem, eu realmente nao estou conseguindo fazer!!!

amigo para que você quer fazer isso? alguma prova? teste de professor? aposta?

bem é possivel fazer isso usando bitwise


unsigned int num;
if(num & 1)
// é impar
else
// é par

ou com bit shift (exemplo abaixo para 1 inteiro de 32 bits)


unsigned int num;
if((num << 31) >> 31)
// impar
else
// par

mas tenha em mente que esses métodos não são portáveis já que dependem de como o processador armazena os números, recomendo unsigned mas pode funcionar em signed

Link para o comentário
Compartilhar em outros sites

amigo para que você quer fazer isso? alguma prova? teste de professor? aposta?

é um exercicio que o professor passou!

bem é possivel fazer isso usando bitwise


unsigned int num;

if(num & 1)

// é impar

else

// é par

[b]desse jeito eu fiz mas o professor nao aceitou falando que a funçao "num & 1" ele nao passou ainda na sala.

por isso estou tendo tanta difuculdade.[/b]

[b]obrigado por ter respondido o post amigo!!!![/b]

Link para o comentário
Compartilhar em outros sites

Faça 1 loop que divide o número por 2.....

depois voce verifica se o número que restou é 1 ou 0

algo assim acredito

printf("Digite um numero:");

scanf("%f", &num);

aux = num; //Variavel auxiliar..

while (aux>1){

aux /= 2; // isso é igual a .. aux = aux / 2

}

if (aux == 0) printf("Numero Par");

else ("Numero Impar");

Sera que da certo algo do tipo??

Link para o comentário
Compartilhar em outros sites

  • 6 anos depois...

Bem, como resposta a esse tópico ahaha

Crie duas veria veis (uma principal e uma auxiliar) de tipo int

Peça o numero ao usuário, e salve na variável principal. A variável auxiliar irá receber o valor da variável principal dividido por 2.

Na próxima etapa você faz uma verificação se o valor da auxiliar multiplicado por 2 é igual ao valor da variavel principal, assim: 

 

 aux=(n1/2)

 if(aux==n1){

     printf("PAR");

 }else{

     printf("IMPAR");

 }

 

Por que dividir o numero e depois multiplicado? Bem, quando você divide um numero impar por 2, irá sempre sobrar 0.5, e esse 0.5 não é salvo em variaveis do tipo int. Quando você multiplica, o valor multuplicadp será menor. Por exemplo: 

9/2=4.5 (salvou apenas o 4 na variavel de tipo int)

4*2=8

8=9? falso, então é impar.

 

att.

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...