Foros del Web » Programación » C/C++ »

Problemas con la función sqrt

Estas en el tema de Problemas con la función sqrt en el foro de C/C++ en Foros del Web. Hola amigos, resulta que a mi hermano le han mandado hacer en clase un sencillo programa C que sirva para resolver una ecuación de segundo ...
  #1 (permalink)  
Antiguo 31/10/2006, 06:34
 
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 549
Antigüedad: 9 años, 6 meses
Puntos: 0
Exclamación Problemas con la función sqrt

Hola amigos,

resulta que a mi hermano le han mandado hacer en clase un sencillo programa C que sirva para resolver una ecuación de segundo grado así que me puse a echarle una mano y éste es programa que finalmente creamos:

#include<stdio.h>
#include<math.h>
int main(){
float a, b, c, d;
printf("Se supone una ecuación de grado dos del tipo ax2+bx+c=0"
"\nIntroduzca el valor correspondiente a \"a\"");
scanf("%f", &a);
printf("Introduzca el valor correspondiente a \"b\"");
scanf("%f", &b);
printf("Introduzca el valor correspondiente a \"c\"");
scanf("%f", &c);
if(a==0.0)
if(b==0.0) /*Ecuación degenerada*/
printf("La ecuacion es degenerada\n");
else /*Ecuación de raíz única*/
printf("La ecuacion tiene una raiz unica igual a %.2f\n", -c/b);
else{
d=b*b-4*a*c; /*Discriminante*/
if(d>=0.0) /*Raíces reales*/
printf("Las soluciones de la ecuacion son %.2f y %.2f\n",
(-b+sqrt(d))/(2*a), (-b-sqrt(d))/(2*a));
else /*Raíces complejas*/
printf("La ecuación tiene por solución 2 raices complejas de la forma "
"x+yi, x-yi\n");
}
return 0;
}


Aparentemente el programa deberia funcionar a la perfección y cuál fue mi sorpresa cuando al compilar aparecen los siguientes errores:
undefined reference to 'sqrt'
undefined reference to 'sqrt'


Y no entiendo porqué le compilador dice que la función sqrt no está definida si en la línea 2 del programa está incluída la cabecera math.h

Yo trabajo con Linux y utilizo el compilador gcc y la única explicación que se me ha pasado por la cabeza es que a lo mejor el compilador no es capaz de acceder a las funciones de la librería math, ¿qué opinais vosotros? Yo es que en el código no veo ningún error por más que lo reviso.

Saludos y gracias de antemano por vuestra ayuda
__________________
Nadie dijo que ésto iba a ser fácil
  #2 (permalink)  
Antiguo 31/10/2006, 07:37
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 8 años, 4 meses
Puntos: 9
A mí en windows me compila. Trata de buscar por el man sqrt o math.h a ver si sale algo... de no salir supongo que no se encontrará incluida.
  #3 (permalink)  
Antiguo 31/10/2006, 08:39
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Melita
Mensajes: 6.194
Antigüedad: 10 años, 3 meses
Puntos: 73
No es un error al compilar sino al enlazar, deberias haber puesto el output del gcc (exacto) aca mismo ... tenes que usar /usr/lib/libm.a ... aca mas informacion:

http://www.network-theory.co.uk/docs...cintro_17.html
__________________
Luche y vuelve! Nacional y Popular
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #4 (permalink)  
Antiguo 31/10/2006, 13:30
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 9 años, 4 meses
Puntos: 17
No debería dar ningún problema:

Código:
max@morfeo:~$ cat test.c
#include <stdio.h>
#include <math.h>

int main()
{
        printf("Raiz de 2: %f\n", sqrt(2));
        return 0;
}
max@morfeo:~$ gcc -Wall -o test test.c
max@morfeo:~$ ./test
Raiz de 2: 1.414214
max@morfeo:~$
Puede que tengas mal configurado algún aspecto (no te sabría explicar ahora mismo qué), y tengas que enlazar la librería como dice Eternal Idol. Tendrías que usar el parámetro "-lnombre", siendo "nombre" el nombre de la librería.

Código:
max@morfeo:~$ gcc -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,java,f95,objc,ada,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.0 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-awt=gtk-default --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/jre --enable-mpfr --disable-werror --with-tune=pentium4 --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.0.3 (Ubuntu 4.0.3-1ubuntu5)

Última edición por MaxExtreme; 31/10/2006 a las 13:36
  #5 (permalink)  
Antiguo 31/10/2006, 15:28
 
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 549
Antigüedad: 9 años, 6 meses
Puntos: 0
¡¡Solucionado!!

Ya está solucionado.

Efectivamente Eternal Idol tenía razón ya que yo estaba tratando de compilar de la siguiente forma:
gcc -o ecuaciongrado2 ecuaciongrado2.c

Y siguiendo los consejos de Eternal Idol probé de esta otra forma que resultó ser la buena:
g++ -L /usr/lib -o ecuaciongrado2 ecuaciongrado2.c

Un saludo y gracias a todos por vuestra ayuda
__________________
Nadie dijo que ésto iba a ser fácil
  #6 (permalink)  
Antiguo 31/10/2006, 15:38
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Melita
Mensajes: 6.194
Antigüedad: 10 años, 3 meses
Puntos: 73
Cita:
Iniciado por jruiz_fdez Ver Mensaje
Un saludo y gracias a todos por vuestra ayuda
De nadas
__________________
Luche y vuelve! Nacional y Popular
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #7 (permalink)  
Antiguo 01/11/2006, 00:20
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 9 años, 4 meses
Puntos: 17
Cita:
Iniciado por jruiz_fdez Ver Mensaje
Ya está solucionado.

Efectivamente Eternal Idol tenía razón ya que yo estaba tratando de compilar de la siguiente forma:
gcc -o ecuaciongrado2 ecuaciongrado2.c

Y siguiendo los consejos de Eternal Idol probé de esta otra forma que resultó ser la buena:
g++ -L /usr/lib -o ecuaciongrado2 ecuaciongrado2.c

Un saludo y gracias a todos por vuestra ayuda
Juas, pues vaya configuración de gcc de han dejado. Para que no te toque hacer eso, añádelo a tu configuración, si no me equivoco:

--libexecdir=/usr/lib
  #8 (permalink)  
Antiguo 28/10/2008, 17:43
 
Fecha de Ingreso: octubre-2008
Mensajes: 3
Antigüedad: 5 años, 10 meses
Puntos: 0
Respuesta: Problemas con la función sqrt

hola este es mi primera aparicion...jej


bueno, veo que les funcaron con el uso de g++...pero me gustaria que funcase con gcc....

y por ello les conparto el código para que funque las funciones sqrt, sin, cos..etc
esto solo se puede hacer agregando la opcion "-lm"
Cita:
gcc -o ejecutable.out program.c -lm -Wall

salu2.

Última edición por keikurono; 28/10/2008 a las 18:00
  #9 (permalink)  
Antiguo 29/10/2008, 01:08
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Melita
Mensajes: 6.194
Antigüedad: 10 años, 3 meses
Puntos: 73
Respuesta: Problemas con la función sqrt

Este hilo es de hace dos años ...
__________________
Luche y vuelve! Nacional y Popular
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #10 (permalink)  
Antiguo 30/10/2008, 20:27
 
Fecha de Ingreso: octubre-2008
Mensajes: 3
Antigüedad: 5 años, 10 meses
Puntos: 0
Respuesta: Problemas con la función sqrt

bueno .. quiero colaborar....

salu2.
  #11 (permalink)  
Antiguo 31/10/2008, 01:06
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Melita
Mensajes: 6.194
Antigüedad: 10 años, 3 meses
Puntos: 73
Respuesta: Problemas con la función sqrt

Esta muy bien pero asi no colaboras, este problema ya esta mas que solucionado. Comproba los hilos recientes que no tengan solucion
__________________
Luche y vuelve! Nacional y Popular
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 15:27.
SEO by vBSEO 3.3.2