Bueno...me sabe mal que todos los post sean míos pero allá va.
He empezado a trastear con C y he "intentado" hacer un programa que a partir de 2 numeritos enteros encuentre el modulo, como si se tratara de números complejos.
el código que llevo hecho hasta ahora es el siguiente:
#include <stdio.h>
#include <math.h>
main (){
int real,imag,quad1,quad2;
quad1=pow(real,2);
quad2=pow(imag,2);
printf("Nombre real\n");
scanf("%d", &real);
printf("Nombre imaginari\n");
scanf("%d", &imag);
printf("suma : %d\n", real+imag);
printf("quadrat del real %d\n", quad1);
printf("quadrat del imag %d\n", quad2);
return 0;
}
Abro la terminal y escribo:
gcc primera.c /usr/lib/libm.a -o calc
Se me crea un archivo calc y lo ejecuto
./calc
Aquí empieza el problema, me pide el nombre real, inserto 2 por ejemplo.
Me pide numero imaginario, pongo 3.
Me muestra la suma correcta, que es 5.
Pero tanto el cuadrado del 1ro como el cuadrado del 2ndo me muestra -2147483648 una burrada vamos.
Creo que es problema de pow(x,y) relacionado con la librería math.h. Realmente esto de las librerías no lo entiendo mucho, dónde se encuentran? te las instalas con el paquete build-essential (que previamente tuve que instalar para el compilador gcc)?
Si alguien sabe la solución que me eche una mano porfavor
Hoygan grasias de hantebraso xD
Si no has tenido errores de compilación (y así ha debido de ser ya que has podido ejecutar el programa) diría que el error no será por la biblioteca sino por otra cosa.
Hace mucho que no programo cosas matemáticas en C, pero diría (tras un primer vistazo a la referencia de
math.h
ypow()
, y viendo el número que te da como resultado -¿overflow?) que podría ser un problema de tipos.Prueba a declarar las variables con tipo
double
.