Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

viniciusfroner

Biblioteca math.h e operador pow

Recommended Posts

Utilizei o operador pow(x,y) para fazer um número x elevado a y.. OK até ai, o problema está que o valor de X e o valor de Y deve ser definido pelo usuário, mas quando utilizo uma variável o comando diz que não posso fazer isso..

#include <stdio.h>
#include <math.h>

int main(){
	int x,y;
	printf("Digite o valor de x: ");
	scanf("%d",&x);
	printf("Digite o valor de y: ");
	scanf("%d",&y);
        printf("Resultado de %d elevado a %d igual a %d", x, y, pow(x, y)); 
	return(0);
}

Alguem sabe como resolver isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, agora fiquei curioso. Como assim não consegue usar a variável?

Pode postar as mensagens do compilador?

 

Compilei e executei o teu código alterando as varáveis para double e funcionou perfeitamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vinicius

 

Peço desculpas, não havia comprendido o teu problema. Mas executei alguns testes, garimpei um pouco na internet e aí percebi o que era.

 

O que está acontencendo é que a biblioteca Math.h não está sendo linkada ao executável, por isso não encontra a função. Agora, o detalhe de compilar com números fixos e não compilar utilizando variáveis não descobri o motivo.

Algum usuário mais experiente pode sanar essa dúvida.

 

Vou colocar aqui como resolver o problema:

1. Compilando através da linha de comando

Compilar
gcc -g -ggdb -c main.c
Linkar
gcc -o app main.o -lm

2. Atravé do Netbeans (utilizei para o teste o netbeans 8.0)

1 -> Vá em propriedades do projeto

2 -> Vá em Buil - Linker 
(Aqui estou com a versão traduzida, uma m****, vá em Construir - Vinculador)

3 -> Na linha bibliotecas (libraries), aperte no botão '...' (mais opções)

4 -> Aperte o botão Adicionar biblioteca padrão (Add standard library)

5 -> Escolha a biblioteca Matematica (na versão traduzida)

6 -> Pressione o botão aplicar (Apply)

Ao realizar estes passos acima, compilou corretamente.

 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver através de sua dica e ao atualizar meu compilador.

#include <stdio.h>
#include <math.h>

int main(){
	double x,y;
	printf("Digite o valor de x: ");
	scanf("%lf",&x);
	printf("Digite o valor de y: ");
	scanf("%lf",&y);
        printf("Resultado de %lf elevado a %lf igual a %lf", x, y, pow(x, y)); 
	return(0);
}

Obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.