Ir ao conteúdo
  • Cadastre-se

C Raiz quadrada


djessirv

Posts recomendados

Bom dia amigo, fiz um exemplo abaixo no proprio C de como usar a raiz quadrada

/*
Este exemplo mostra como calcular a raiz quadrada
de um número. As funções disponíveis em C++ são:
float sqrt(float num);
double sqrt(double num);
long double sqrt(long double num);
Se a função sqrt() for chamada com um número negativo,
um erro de domínio domain error ocorrerá.
*/
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
float numero = 9;
cout << "A raiz quadrada de " << numero <<
" é " << sqrt(numero) << "\n\n";
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}

 

Link para o comentário
Compartilhar em outros sites

Richard M. S. disse:
Bom dia amigo, fiz um exemplo abaixo no proprio C de como usar a raiz quadrada

/*
Este exemplo mostra como calcular a raiz quadrada
de um número. As funções disponíveis em C++ são:
float sqrt(float num);
double sqrt(double num);
long double sqrt(long double num);
Se a função sqrt() for chamada com um número negativo,
um erro de domínio domain error ocorrerá.
*/
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
float numero = 9;
cout << "A raiz quadrada de " << numero <<
" é " << sqrt(numero) << "\n\n";
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}

brother este exemplo é c++

creio eu que ele pediu em C

e no caso ele tem que incluir a biblioteca math.h para usar sqrt

um exemplo basico de programa que calcula raiza quadrada de um numero do tipo float em C seria:

 
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

/*
raiz quadrada de um numero
*/

int main(){
float num, raiz;
printf("Digite um numero: \t");
scanf("%f",&num);
raiz = sqrt(num);
printf("A raiz quadrada de %f é: %f.\n", num, raiz);
system("pause");
return 0;    
}

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 8 anos depois...

Veja só


Acho que a ideia é o algoritmo de raiz quadrada e não como usar a função pré-fabricada. Lógico, sempre podemos usar a função já existente porém com fins didáticos a ideia é ensinar o algoritmo computacional que calcula a raiz quadrada.

 

Como é que sqrt() faz o cálculo ? Já parou para pensar ? 

O algoritmo seria assim em C

https://repl.it/@bokomoko/Calculo-de-raiz-quadrada

 

Eis o fonte

/*
Implementação de raiz quadrada
numero = float(input("Numero ? "))
precisao = int(input("Informe a precisao em casas decimais"))
precisao = 1 / 10**precisao
b = numero
a = 1 
while ( (b-a) >= precisao):
  b = (a+b)/2
  a = numero / b
print(b)
*/ 


#include <stdio.h>
float raiz( float numero ) {
  float precisao = 0.000001;
  float b = numero, a=1;
  while ( (b-a) >= precisao ) {
    b = (a+b)/2;
    a= numero / b;
  }
  return b;
}

float input( char mensagem[]) {
  float entrada;
  printf("%s",mensagem);
  scanf("%f",&entrada);
  return entrada;
}

int main(void) {
  float valor = 1.0;
  while (1) {
    valor = input("Digite o número para tirar raiz ou 0 para terminar");
    if (!valor) break;
    printf("A raiz quadradade de %f é %f\n",valor,raiz(valor));
  }
  return 0;
}

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • 3 anos depois...

Olá, bom dia sou um entusiasta em programação preciso de uma ajuda,  sei que esse tópico tem já um tempo eu tenho um código que me da a raiz quadrada de um numero sendo ele raiz inteira ou decimais só que no resultado das decimais ele me da o decimal e um segundo resultado inteiro errada alguém pode me da um alo onde estou errando

 

#include <stdio.h>
#include <stdlib.h>
      int raiz (int a){
      
      int n=0;       /* Código extraido da equaçao de pell da qual permite encontrar a parte inteira de uma Raiz*/
      int i=1;         /* quadrada simplesmente subtraindo inteiros ímpares. Exemplo: Raiz de 19.*/
      while(a>=i){    /*              1.  19 - 1 = 18    Como 3 é menor que 9 a sequencia para aqui*/
      a=a-i;         /*              2.  18 - 3 = 15    Como 4 subtrações foram efetuadas, entao a*/
      i=i+2;          /*             3.  15 - 5 = 10    resposta é 4.*/
      n=n+1;          /*             4.  10 - 7 = 3*/
    }
    }
    if(a==0){
    return n;
     }else {
        int b= a*100;   // b equivalente a * 100
        int k = 0;     //
        int c= (n*20)+1;     // c é o n transformado em equivalente ao i
        while (b>=c){    
        b=b-c;
        c=c+2;
        k=k+1;
        
    }
        float e= k/(float)10;
        float d= n + e;
        printf("A Raiz Quadrada é %f\n", d);
}
}
     int input( char mensagem[]) {
     int entrada;
     printf("%s",mensagem);
     scanf("%d",&entrada);
     return entrada;
    }
     int main(int argc, char *argv[]) {
     int valor;
     while (1) {
     valor = input("Digite o número para tirar raiz ou 0 para terminar");
     if (!valor) break;
      printf("A Raiz quadrada é %d\n:", raiz(valor));
}
return 0;
}


 

Link para o comentário
Compartilhar em outros sites

Percorri o histórico do autor do programa e fez 3 anos que ele não atualizou, porém, até hoje é possível testar seu programa.

 

 

Já o teu @kisne usa o método da equação de Pell

Citação

A equação de Pell permite encontrar a parte inteira de uma raiz quadrada simplesmente subtraindo inteiros ímpares.

Seguinte trecho de programa:


n = 0;
i = 1;
  
while (m >= i){
		m = m  i;
		i = i + 2;
		n = n + 1;
}

Observe-se que se n é a raiz exata, o valor final de m é zero.

 

Quando  a  difere de 0 você escreveu o quê?

Link para o comentário
Compartilhar em outros sites

15 horas atrás, mauro_b disse:

Percorri o histórico do autor do programa e fez 3 anos que ele não atualizou, porém, até hoje é possível testar seu programa.

 

 

Já o teu @kisne usa o método da equação de Pell

 

Quando  a  difere de 0 você escreveu o quê?

Opa, obrigado por me responder bem essa parte do código que quando difere do zero ele faz outra equaçao para calcula a parte fracionaria dos que nao tem raiz exata.

 

if(a==0){
    return n;
     }else {
        int b= a*100;   // b equivalente a * 100
        int k = 0;     //
        int c= (n*20)+1;     // c é o n transformado em equivalente ao i
        while (b>=c){    
        b=b-c;
        c=c+2;
        k=k+1;
        
    }
        float e= k/(float)10;
        float d= n + e;
        printf("A Raiz Quadrada é %f\n", d);
}
} 

 

O código anterior quando nao tinha a chamada a funçao raiz me dava os  calculos normais, só quando criei essa funcao fora do main vem os resultados em float e logo abaixo em inteiro só que nao era pra vim nada, e vem um numero nada ver.

Link para o comentário
Compartilhar em outros sites

Teu programa compila sem erros, mas faças os teste e se encontrar erros sintáticos e lógicos

"Comente que a postagem é de graça" [citação @Boko Moko]

#include <stdio.h>
#include <stdlib.h>
float raiz( int a ){
      
        int n=0;          /* Código extraido da equaçao de pell da qual permite encontrar a parte inteira de uma Raiz*/
        int i=1;          /* quadrada simplesmente subtraindo inteiros ímpares. Exemplo: Raiz de 19.*/
        while (a>=i) {    /*              1.  19 - 1 = 18    Como 3 é menor que 9 a sequencia para aqui*/
                a=a-i;    /*              2.  18 - 3 = 15    Como 4 subtrações foram efetuadas, entao a*/
                i=i+2;    /*             3.  15 - 5 = 10    resposta é 4.*/
                n=n+1;    /*             4.  10 - 7 = 3*/
        }
        if (a==0) { return n; }
        else {
                int b= a*100;   // b equivalente a * 100
                int k = 0;     //
                int c= (n*20)+1;     // c é o n transformado em equivalente ao i
                while (b>=c) {    
                        b=b-c;
                        c=c+2;
                        k=k+1;
                }           
                float e= k/(float)10;
                float d= n + e;
                return( d );
        }
}
int input( char mensagem[] ){
        int entrada= 0;
        printf("%s",mensagem);
        scanf(" %d",&entrada);
        return entrada;
}
int main( int argc, char *argv[] ){
        int valor = input("Digite o número para tirar raiz ou 0 para terminar");
        while (valor) {
                printf("A Raiz quadrada é %.2f\n:", raiz(valor));
                valor = input("Digite o número para tirar raiz ou 0 para terminar");
                
        }
        return 0;
}

 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Um mero usuário disse:

hm, seria considerado resposta certa fazer " float resultadoRaiz = pow (float numero, (1/2) ) ;"? ou não atende aos pré-requisitos?

Nao porque por me darem as raizes que sao exatas em decimal eu quero separado exato com resultado exato e os nao como sao, em decimais. 

Mais uma vez muito obrigado por me responder

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...