Ir ao conteúdo
  • Cadastre-se
Darlon Salomão

C Calculando raiz quadrada sem math

Recommended Posts

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Math.Pi disse:

 

Obrigado!! @Math.Pi lá eu encontrei esse código que esta calculando bem próximo de uma raiz quadrada, mas eu não estou conseguindo entender o código depois do "recorrer = numero" o que acontece pra ele saber o valor da raiz se dar 1/2... alguém pode me explicar ??

#include <stdio.h>

float raiz_quadrada(float numero);

int main( int argc, char **argv)
{  
    float numero;
    
    printf("Entre com um número positivo por favor : ");
    scanf("%f",&numero);
    
    printf("A raiz quadrada de %.3f é %.5f \n",numero,raiz_quadrada(numero));

    return(0);
}


float raiz_quadrada (float numero)
{
    int n;
    float recorre = numero;
    
    for (n = 0; n < 10; ++n)
          recorre = recorre/2 + numero/(2*recorre);
            
    return(recorre);    
} 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, tudo certo!? Então ...

Eu não entendi as suas razões, se for algum projetor maior recomendo voltar atrás nesse decisão de não usar math, porém no caso de um exercício; recomendo pensar um pouco mais, pois é bem simples de entender.

 

Por exemplo, aqui vem uma simplificação a custo de performance do método de newthon.

 

Calcule a raiz de n, para n não quadrado. Para provar que n não é quadrado, ingenuamente, basta multiplicar um número por si até que o produto seja menor ou igual n, 

 

√(n= 10)

   1 x 1=   1 < 10 ✔

   2 x 2=   2 < 10 ✔

   3 x 3=   9 < 10 ✔

   4 x 4= 16 > 10 ✘, logo a está 3 < √10 < 4

float raiz_quadrada_de( float numero )
{	float 	r= 1;
		/*: Menor raiz exata aproximada de n */
	
	while( numero > (r * r) )r+= 1E+0;
	/*: Calcular a raiz inteira aproximada */
	
	while( numero < (r * r) )r-= 1E-6;
	/*: Cacular a raiz a fração aproximada */
	
	return r;
	/*: Retorna raiz de n */
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado !! @AnsiC  Eu uso math, mas tive a curiosidade de saber e não estava conseguindo entender como isso estava implementado no código ai em cima. Valeu pela atenção !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×