Problema con pow()

Iniciado por -Gtz-, 6 Abril 2012, 04:13 AM

0 Miembros y 1 Visitante están viendo este tema.

-Gtz-

Hola que tal, veran al compila este programa:

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

int main(void)
{
float lado, abase, alateral, atotal, volumen;

printf("Introduzca la medida del lado del cubo: ");
scanf("%f", &lado);

abase = pow(lado, 2);
alateral = 4 * abase;
atotal = 6 * abase;
volumen = pow(lado, 3);

printf("el area de la base es %.2f, el area lateral %.2f, al area total %.2f y el volumen es %.2f", abase, alateral, atotal, volumen);


al compilarlo me aparece:

Citarps113.c:14: undefined reference to 'pow'
collect2: ld returned 1 exit status

parece que el error esta en el segundo pow(), pero si cambio el 3 del exponente por un 2 como el primero si me lo compila, por que pasa estos con algún otro valor diferente a 2?
Claro que lo puedo evitar poniendo:

volumen = lado * lado * lado

pero quiero saber por que me tira el error.

Beakman

#1
Eso es común en gcc.

Sí estás compilando desde consola solo tenés que agregarle -lm:
gcc main.c -o main -lm

-Gtz-

Si creo que -lm es para que al compilar en gcc puedas usar sin nungun problema la libreria math.h, eso lo comprendo, lo que no es entiendo es por que asi no me compila:

abase = pow(lado, 2);
alateral = 4 * abase;
atotal = 6 * abase;
volumen = pow(lado, 3);


pero si cambio el 3 por un 2:

abase = pow(lado, 2);
alateral = 4 * abase;
atotal = 6 * abase;
volumen = pow(lado, 2);


me compila sin ningun problema

Nota: Uso el compilador ZinjaI en Fedora 16

-Gtz-

Que tonto soy, sorry sorry, bueno parece es un problema del compilador, lo compile desde terminal y me lo compilo perfectamente, creo que debí haber hecho eso desde un principio, aunque no entiendo por que actua de esa manera el compilador?

GROV

Así es, es un problema del compilador, he usado ZinjaI varias veces, y es muy atractivo debo admitirlo y tiene cosillas interesantes pero también me he topado con alguno que otro problemita, como este por ejemplo.

Saludos afectuosos!!
"Ningún problema debe de resolverse dos veces"