Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
Ok, mas o problema não é exatamente esse, o problema é que mesmo sendo double não consigo usar uma variável dentro do comando pow.
pow(double x, double y);
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.
Estou usando o netbeans e a mensagem que da é que o operador pow não pode ser resolvido, mas quando retiro a variável e coloco um número ele funciona sem problema..
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.
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.
A função pow não aceita parâmetros int, apenas double.
http://www.cplusplus.com/reference/cmath/pow/
Sugiro que leia as mensagens do compilador.