View previous topic :: View next topic |
Author |
Message |
flaab_0n Guru
Joined: 27 Dec 2003 Posts: 470 Location: /España/Madrid/Alcorcon
|
Posted: Mon Oct 16, 2006 7:53 am Post subject: [PROGRAMACION] C y librerias (abierto) |
|
|
Hola a todos
Vereis necesito programar en Ansi C y me había puesto a ello. Tengo instalados Gcc y GlibC. La cosa es que cargo la libreria math.h por ejemplo y aun asi no puedo utilizar las funciones de esa librería. El compilador alega que no estan definidas. Observar el siguiente codigo:
Code: |
// Programa que recibe coefiecientes de una ecuacion de 2do grado y devuelve valores de x1 y x2
#include <stdio.h>
#include <math.h>
//#############################################
//# EXISTE YA PERO VAMOS A HACERNOS LA FUNCION DE ELEVAR A X
//#############################################
// Importante decir que tipo de dato entra sobre todo de cara a los bucles
float potencia(float n1, int n2) {
float res; // Resultado que devuelve
int i; // Controlador de bucle
// Si el valor es mayor que dos, hacemos el bucle
if(n2 > 1) {
// Antes de iniciar el bucle, asignamos n1 a resultado.
res = n1;
// Bucle for. Por cada vez elevada multiplicamos lo anterior por la base
for(i=2; i<=n2; i++) {
res = res * n1;
}
} else { res = n1; } // Si es elevado a 1, devolvemos n1.
return res;
} // Fin de funcion
main()
{
int vx;
int vy;
int vz;
float vx1;
float vx2;
double aux;
// Leemos
printf("Introduca coeficiente a: ");
scanf("%i", &vx); //
printf("\n");
// Leemos
printf("Introduca coeficiente b: ");
scanf("%i", &vy); //
printf("\n");
// Leemos
printf("Introduca coeficiente c: ");
scanf("%f", &vz); //
printf("\n");
// Operamos. [b]EL ERROR ES AQUI[/b]
aux = sqrt(potencia(vy,2) - (4* vx * vz));
// Seguimos operando
vx1 = (-vy) + aux / (2*vx);
printf("Valor de X1: %f \n", vx1);
// Seguimos operando
vx2 = vy + aux / (2*vx);
}
|
El compilador me peta, insulta lo siguiente:
Code: | flaab@localhost ~/Desarrollo/C $ gcc p10_ecuacion.c
/tmp/ccup1qsS.o: En la función `main':
p10_ecuacion.c:(.text+0x100): referencia a `sqrt' sin definir
collect2: ld devolvió el estado de salida 1
|
Cuando sqrt es una funcion de la librería Math. Me pasa con todas las funciones de math.h. ¿Alguien sabría darme alguna idea?
Gracias. _________________ [ _Flaab_0n ]
www.quinielalosases.com |
|
Back to top |
|
|
v1ll4 n00b
Joined: 26 Feb 2005 Posts: 24
|
Posted: Mon Oct 16, 2006 8:25 am Post subject: |
|
|
Debes añadir "- lm".
Code: |
villa@villa-portatil pruebas $ vi ecuacion.c
villa@villa-portatil pruebas $ gcc -lm ecuacion.c -o ecuacion
villa@villa-portatil pruebas $ ./ecuacion
Introduca coeficiente a: 4
Introduca coeficiente b: 2
Introduca coeficiente c: 1
Valor de X1: 1446.154663
|
Lo del resultado ya lo mejoras tú.
Saludos _________________ In Ballantines we trust |
|
Back to top |
|
|
bontakun Apprentice
Joined: 25 Jan 2005 Posts: 234 Location: Temuco - Chile
|
Posted: Wed Oct 18, 2006 3:00 am Post subject: |
|
|
disculpa... no viene al caso, como tampoco mehe informado del tema.. pero = dejo lapregunta porsiaca...
-lm q hace exactament...???
gracias |
|
Back to top |
|
|
Ferdy Retired Dev
Joined: 04 May 2002 Posts: 483 Location: España
|
Posted: Wed Oct 18, 2006 5:40 am Post subject: |
|
|
Enlaza con la librería compartida libm. Que casualmente es 'libmath'
-l (enlazar) m (libm)
-l (enlazar) ncurses (libncurses)
...
- ferdy |
|
Back to top |
|
|
bontakun Apprentice
Joined: 25 Jan 2005 Posts: 234 Location: Temuco - Chile
|
Posted: Fri Oct 20, 2006 5:52 am Post subject: |
|
|
vale gracias...
con esto soluciono algunos errores en mi practica de programacion XD |
|
Back to top |
|
|
|