Ir ao conteúdo
  • Cadastre-se

Verificar se um numero é potencia de 2 - o que esta de errado no meu codigo?


Guilherme Sixe
Ir à solução Resolvido por MassakiMsk,

Posts recomendados

#include<stdlib.h>
#include<stdio.h>
#include<math.h>
int main(){
	int n;
	float lg;
	
	scanf("%d", &n);
	lg=log10(n)/log10(2);
	
	if(lg%2==0){
		printf("é");
	}
	else{
		printf("Não é");
	}
	system("pause");
	return 0;
}

Isso foi ate onde eu cheguei. Não sei se resolve o meu problema. Mas alem disso esta dando erra na hora do resto que nao pode ser um float com int. Alguem sabe resolver isso?

Link para o comentário
Compartilhar em outros sites

Ola

tente o seguinte

converta a variável lg de "float" para "int"

em seguida, no trecho "lg=log10(n)/log10(2);",

após o sinal de igualdade adicione (int) com abre e fecha parenteses

como o exemplo:

 

      lg=(int)log10(n)/log10(2);

 

acontece que a funçao log10() retorna um tipo flutuante

que você deve converte-lo e passa-lo para a variável lg com o tipo de dado int.

Essa variável deve ser do tipo int pois na linha 11 você quer tirar o modulo de outro numero do tipo int, o que não seria possível fazendo com dois tipos de dado diferente

 

 

espero ter te ajudado.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
int main(){
	int n;
	float lg;

	scanf("%d", &n);
	do{
        lg=log10(n)/log10(2);

        if(lg>(int)lg){
            printf("nao é\n");
        }
        else{
            printf("é\n");
        }
        scanf("%d", &n);
	}while(n!=0);
	system("pause");
	return 0;
}

Como saber se o numero é potencia de 2? a variável lg vai ter que ter um valor inteiro, se tiver valor decimal significa que não é potencia de 2.

Para verificar se possui valor decimal basta subtrair a somente a parte inteira de lg do proprio lg. Se o valor for diferente de 0 significa que possui valor decimal, então não é potencia de 2.

  • Curtir 1
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...