Função sqrt e pow [RESOLVIDO]

1. Função sqrt e pow [RESOLVIDO]

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 18/03/2013 - 15:03h

Estou com a seguinte dúvida, tenho um programa, no qual em determinado momento preciso fazer a conta:

d=raizquadradade(a²+b²+c²);

já descobri que o sqrt não aceita fazer isso direto, então precisei usar o pow:

 quada=pow(a,2)
quadb=pow(b,2)
quadc=(c,2)


e então o sqrt:

quad=sqrt(quada+quadb+quadc)  


minha dúvida é se tem problema eu fazer a soma direto dentro do sqrt, é que minha raiz quadrada sempre está dando maior que o normal, por exemplo raiz quadrada de 16 que deveria ser 4, está dando 9.
Por que será?


  


2. Re: Função sqrt e pow [RESOLVIDO]

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 18/03/2013 - 15:11h

Não há problema somar dentro da função.

pow e sqrt utilizam ponto flutuante como parâmetro.
Que tipo de variável tu está utilizando como parâmetro?
De um exemplo das entradas que está dando saída errada.


3. Re: Função sqrt e pow [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 18/03/2013 - 15:18h

Como o amigo acima já disse, é possível que você esteja misturando números de ponto flutuante com inteiros. Não faça isso.

Além do mais, é besteira usar pow() para obter um simples quadrado (ainda mais se a base for de um tipo inteiro). Para elevar ao quadrado, use multiplicação simples (por exemplo: a*a).


4. Re: Função sqrt e pow [RESOLVIDO]

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 18/03/2013 - 15:25h

uilianries escreveu:

Não há problema somar dentro da função.

pow e sqrt utilizam ponto flutuante como parâmetro.
Que tipo de variável tu está utilizando como parâmetro?
De um exemplo das entradas que está dando saída errada.


é float todas a variáveis, tem que ser float porque são medidas em centímetros e pode dar numero quebrado.


5. Re: Função sqrt e pow [RESOLVIDO]

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 18/03/2013 - 15:29h

o código completo é:


#include <stdio.h>
#include <math.h>
main()
{
float a,b,c;
double quada,quadb,quadc,d;
int cont, cont1=0, cont2=0, cont3=0, cont4=0;
for(cont=1;cont<=1;cont++)
{
printf("Digite as dimensões da caixa:\n");
scanf("%f %f %f",&a,&b,&c);
quada=pow(a,2);
quadb=pow(b,2);
quadc=pow(c,2);
d=sqrt(quada+quadb+quadc);
printf("%lf",d);
if(d<=10)
{
cont1++;
}
else
{
if(d<=15)
{
cont2++;
}
else
{
if(d<=20)
{
cont3++;
}
else
{
if(d<=25)
{
cont4++;
}
else
{
printf("\nnão caberá em nenhuma das esferas!");
}
}
}
}
printf("\nVoce ira usar %d esferas de 10 cm.",cont1);
printf("\nVoce ira usar %d esferas de 15 cm.",cont2);
printf("\nVoce ira usar %d esferas de 20 cm.",cont3);
printf("\nVoce ira usar %d esferas de 25 cm.\n",cont4);
printf("%f",a);
}
}

aqui é pra repetir até 10000 vezes, tá com 1 pq eu tava testando.


6. Re: Função sqrt e pow [RESOLVIDO]

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 18/03/2013 - 16:20h

Já tive problema com ponto flutuante em que sempre passava numero inteiro.

Deixa explicito as comparações utilizando .0 para ver se resolve.
Quando perguntar a entrada, passa "16.0" ao invés de "16"
Também if( d <= 15.0 ) e assim por diante.

Talvez o compilador entenda como inteiro e compara com um float e vira a bagunça final.




7. Re: Função sqrt e pow [RESOLVIDO]

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 18/03/2013 - 16:46h

uilianries escreveu:

Já tive problema com ponto flutuante em que sempre passava numero inteiro.

Deixa explicito as comparações utilizando .0 para ver se resolve.
Quando perguntar a entrada, passa "16.0" ao invés de "16"
Também if( d <= 15.0 ) e assim por diante.

Talvez o compilador entenda como inteiro e compara com um float e vira a bagunça final.



eu não o problema ta na raiz mesmo eu coloquei um printf antes ele está dando um valor maior.


8. Re: Função sqrt e pow [RESOLVIDO]

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 18/03/2013 - 16:54h

tive que fazer a raiz quadrada separada para depois somar.


9. Re: Função sqrt e pow [RESOLVIDO]

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 18/03/2013 - 16:56h

ianclever escreveu:

tive que fazer a raiz quadrada separada para depois somar.


Matou o problema, então? :)



10. Re: Função sqrt e pow [RESOLVIDO]

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 18/03/2013 - 16:59h

sim.


11. Re: Função sqrt e pow [RESOLVIDO]

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 18/03/2013 - 17:00h

Parabéns.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts