Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
#include<stdio.h>
#include<math.h>
double hipotenusa(double side1, double side2);
int main(void){
double lado1, lado2;
printf("Entre com os lados do triangulo.\n");
scanf("%f%f", &lado1, &lado2);
printf("A hipotenusa é: %.2f", hipotenusa(lado1, lado2));
return 0;
}
double hipotenusa(double side1, double side2){
double hip;
hip = pow((side1 * side1) + (side2 * side2), 1/2);
return hip;
}Cara,
Não é isso n. O printf aceita %f para variáveis do tipo double. Pelo que consegui ver, o erro está na função pow. Não sei porque ela joga em uma das variáveis que calcula um nº negativo, aí não é aceita na raiz quadrada e retorna um erro.
Fazendo com sqrl no lugar de pow roda beleza.
Flw!!!
Não dá erro nenhum.
De fato, use o formato adequado para ler valores de tipo double: %lf (obs: para impressão, %f já especifica double).
O que você deve ter tentado dizer é que o resultado não é o que você espera (sempre 1.00). O motivo disto é a divisão inteira usada como argumento para pow. Veja este tópico.
Vlw pela correção!
Não sabia que %f podia especificar um double no printf.
Vlw guidjos,
O post lá era exatamente o meu problema, e ainda fiquei sabendo que existem várias biblio que o gcc precisa de uma ajudinha.
Vlw mesmo!!!!!
Mas será que tenho como trocar o titulo do tópico? Gostaria de colocar algo como: problema com a função POW.
Outros tb podem ficar perdidos assim como eu fiquei.
O retorno da função está incorreto.
Você está tentando imprimir um float, mas a sua função retorna um double.