Como calcular raiz quadrada em c sem biblioteca

Olá, sou iniciante na área de programação e estou fazendo um programa que calcula alguns tipos de médias, porém na média geométrica a formula usa raiz quarta de a.b.c.d, eu pensei em usar a função sqrt porém se não estou enganado ela so faz raiz quadrada, como posso fazer essa conta?

#include <stdio.h> #include <math.h> int main(void) { int cod; float nota1, nota2, nota3, nota4, media; printf("Insira a primeira nota: "); scanf("%f", &nota1); getchar(); printf("Insira a segunda nota: "); scanf("%f", &nota2); getchar(); printf("Insira a terceira nota: "); scanf("%f", &nota3); getchar(); printf("Insira a quarta nota: "); scanf("%f", &nota4); getchar(); printf(" \n 1: Aritmetica \n 2: Harmonica \n 3: Geometrica \n 4: Quadratica \n\n Insira o codigo da media que deseja: "); scanf("%d", &cod); getchar(); if (cod == 1){ media = (nota1 + nota2 + nota3 + nota4 )/4; printf("Media: %.2f", media); } if (cod == 2){ media = (4/((1/nota1)+(1/nota2)+(1/nota3)+(1/nota4))); printf("Media: %.2f", media); } if (cod == 3){ media = printf("Media: %.2f", media); } if (cod == 4){ media = (sqrt((pow(nota1, 2) + pow(nota2, 2) + pow(nota3, 2) + pow(nota4, 2))/4)); printf("Media: %.2f", media); } return 0; }

Por: Eduardo Casavella
Fornece um conjunto de funções para operações matemáticas, tais como funções trigonométricas, hiperbólicas, logaritmos, potência e arredondamentos.

Todas as funções da biblioteca math.h retornam um valor do tipo double.

Na tabela abaixo apresentamos algumas funções presentes na biblioteca math.h

Função Descrição do comando
floor( ) arredonda para baixo
ceil( ) arredonda para cima
sqrt( ) Calcula raiz quadrada
pow(variável, expoente) potenciação
sin( ) seno
cos( ) cosseno
tan( ) Tangente
log( ) logaritmo natural
log10( ) logaritmo base 10

No programa abaixo, temos um resumo das funções mais utilizadas e os comentários.

Exemplo de utilização da biblioteca math.h

#include <stdio.h> #include <conio.h> #include <math.h>//necessária para usar as funções matemáticas int main (void) { double x = 9.75; double arredonda_pbaixo = 0.0; double arredonda_pcima = 0.0; double raiz_quadrada = 0.0; double potencia = 0; double seno = 0; double cosseno = 0; double tangente = 0; double logaritmo_natural = 0; double logaritmo_xbase10 = 0; printf("\n********* Utilizando a biblioteca math.h ***********\n\n"); printf("\nFuncoes de arredondamento\n\n"); printf("Valor original de x = %f\n",x); arredonda_pbaixo = floor(x); printf("Valor aproximado para baixo %f \n", arredonda_pbaixo ); arredonda_pcima = ceil(x); printf("Valor aproximado para cima %f \n", arredonda_pcima); printf("\n----------------------------------------------------\n\n"); printf("\nFuncoes de raiz e potenciacao \n\n"); printf("Valor original de x = %lf\n",x); raiz_quadrada = sqrt(x); printf("Valor da raiz quadrada %f \n",raiz_quadrada); x = ceil(x); //arredondando o x para cima, x passa a valer 10 potencia = pow(x,2); //elevando o valor de x ao quadrado printf("Valor de %.2lf ao quadrado %.2f \n",x,potencia); printf("\n----------------------------------------------------\n\n"); printf("\nFuncoes trigonometricas\n\n"); x = 0; //atribuindo zero em x para fazer os cálculos trigonométricos seno = sin(x); printf("Valor de seno de %.2f = %.2f \n",x,seno); cosseno = cos(x); printf("Valor de cosseno de %.2f = %.2f \n",x,cosseno); tangente = tan(x); printf("Valor de tangente de %.2f = %.2f \n\n",x,tangente); printf("\n----------------------------------------------------\n\n"); printf("\nFuncoes logaritmicas\n\n"); x = 2.718282; logaritmo_natural = log(x); printf("Logaritmo natural de x %.2f = %.2f \n",x,logaritmo_natural); x = 10; logaritmo_xbase10 = log10(x); printf("Logaritmo de x na base 10 %.2f = %.2f \n",x,logaritmo_xbase10); printf("\n----------------------------------------------------\n\n"); getch(); return(0); }

Tela de execução

Como calcular raiz quadrada em c sem biblioteca

Tela de execução da biblioteca math.h

Até a próxima!

Se a biblioteca math implementa isso, e não usa algum tipo de magia, então deve ter como implementar, não é mesmo?

Como calcular raiz quadrada em c sem biblioteca

O que é a raiz quadrada? É o inverso da operação do quadrado, ou seja

sqrt(x2) = x

quando

x * x = x2

Sabendo isso dá pra pensar em algum algoritmo que calcule x a partir de x2. Por exemplo, podemos iterar desde 0 até achar um valor que quando multiplicado por si mesmo de um valor proximo ao de x2, e assim temos a raiz quadrada.

para x := 0 ate INFINITO faça: se (x * x) >= x2 então: retorne x

É ineficiente mas funciona. Assim da para tentar bolar outros algoritmos mais eficientes para números grandes, por exemplo da pra tentar ir percorrendo ao contrario usando divisão de x2 por x, etc. Só usar a criatividade, analisar as relações entre os números, o domínio de resultados possíveis podendo descartar coisas que dá pra saber de antemão que não vão fazer parte da solução, etc.

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