[ Foro de C ]

funciones matematicas

08-Aug-2013 01:43
Jose Manuel Illanes Juan
2 Respuestas

Buenas, me encuentro en el apartado de funciones matemáticas.
Estoy haciendo los ejercicios pero en los dos tengo el mismo problema ya que hago el codigo que estoy seguro que está bien pero al compilar sale esto:

gcc -Wall -o "ec2grado" "ec2grado.c" (en el directorio: /home/pc/Documentos/programacionC/programasenC/funciones)
/tmp/ccf5gzzX.o: In function `main':
ec2grado.c:(.text+0xba): undefined reference to `sqrt'
ec2grado.c:(.text+0x100): undefined reference to `sqrt'
collect2: ld devolvió el estado de salida 1
Ha fallado la compilación.

pongo el codigo por si es necesario:


/*Crear un programa que resuelva ecuaciones de segundo grado, del tipo ax2 + bx + c =
0 El usuario deberá introducir los valores de a, b y c. Pista: la solución se calcula con
x =(-b ± raíz (b2 ? 4·a·c)) / 2·a */


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

int main()
{
	float a,b,c;
	float x1, x2;
	
	printf("Este programa nos permitirá resolver ecuaciones de segundo grado");
	printf("Introduce el parámetro a");
	scanf("%f", &a);
	printf("Introduce el parámetro b");
	scanf("%f", &b);
	printf("Introduce el parámetro c");
	scanf("%f", &c);	

	x1 = (-b + sqrt ((b*b) - (4*a*c))) / (2*a);
	x2 = (-b - sqrt ((b*b) - (4*a*c))) / (2*a);
	
	printf("Las soluciones de la ecuación son:"
	" x1=%f.\n x2=%f.\n",x1,x2);
return 0;

}


No se cual es el problema pero creo que no es del código si no del programa o algo asi.
Por si es útil utilizo ubuntu 12.04 y programo con el edito geany

Espero que me ayudeis.

Muchas gracias.


08-Aug-2013 13:49
Nacho Cabanes (+83)

Efectivamente, en algunos compiladores de C, típicamente en la versión de GCC para Linux, no se enlaza la biblioteca de matemáticas si no lo pides de forma explícita  (si compilas en C++ con "g++" sí se enlaza, pero no en C puro).

La solución es añadir la opción "-lm" al final de la línea de comandos ("link math"):

gcc -Wall -o "ec2grado" "ec2grado.c" -lm

Por cierto, voy a comprobar si este detalle lo especifiqué en la versión PDF del curso (que es la que actualizo de vez en cuando), y si no es así, lo añado, porque voy a lanzar una versión actualizada pronto.


08-Aug-2013 18:15
Jose Manuel Illanes Juan

Muchas gracias. Yo sigo la versión 0.90 del PDF y en esa versión no está añadida.
Haces bien en añadirlo porque yo llevo un día buscando cual podría ser el fallo y como solucionarlo.

Muchas gracias de nuevo.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)