Ir ao conteúdo
  • Cadastre-se

Problemas com SQRT();


amzero

Posts recomendados


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define pi 3.14159265358979323846



int main(void){
double n;
scanf("%lf",&n);
n = n*n;
double hipotenusa = sqrt(n);
double areamenor = (n)/2;
double nova = (pi*n)/4;
printf("%.3lf",2*(nova-areamenor));

return 0;
}

O erro 'e este(no GCC):

- undefined reference to `sqrt'

collect2: ld returned 1 exit status

Link para o comentário
Compartilhar em outros sites

Bom, fiz aqui um "teste" e o erro só foi consertado ao mover de "double hipotenusa" por exemplo, para um geral, como "double n, areamenor, hipotenusa, nova;" e depois fazer a atribuição, como "hipotenusa=sqrt(n);"

Não tenho o GCC, então talvez só não dê pra fazer isso no Visual Studio, mas aqui depois dessas alterações deu certo..

Link para o comentário
Compartilhar em outros sites

Eu copiei e colei o seu código aqui (estou usando codeblocks com gcc) e funcionou sem problemas...

Outra coisa, não sei bem o que você está tentando fazer, mas nesse trecho:


double n;
scanf("%lf",&n);
n = n*n;
double hipotenusa = sqrt(n);

Você lê o valor de n, eleva esse valor ao quadrado (multiplicando ele por ele mesmo) e atribui a raiz quadrada desse número à variável hipotenusa. Repare que o valor que será atribuido à hipotenusa é sempre igual ao valor original de n entrado pelo usuário, então caso não consiga corrigir o problema, você pode atribuir o valor de n que foi entrado pelo usuário à hipotenusa.

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

valeu aí, mas ja consegui a partir da funcao POW. Que tem a mesma funcao.

Só gostaria de ressaltar que a função pow não tem a mesma finalidade da função sqrt.

A função pow efetua a operação de potência, enquando a sqrt efetua a operação de raiz quadrada.

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

Procure onde você configura diretório de bibliotecas aí nesse editor e configure o diretório correto para localizar biblioteca de compilação.

O erro é que ele precisa de uma coisa chamada libmath.

Se você fosse compilar por linha de comando, teria que escrever:

gcc seuprograma.c -o seuprograma.exe -lm

Esse "-lm" é opção prá compilar com libmath, DESDE QUE o compilador saiba encontrar ela no diretório indicado por esse editor ou por uma variável do sistema ou um parâmetro de linha de comando igual a esse "-lm".

Aliás, a opção é "-l". O "m" é prá ele saber o nome da biblioteca. "m" é o parâmetro da opção"l".

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!