resueltos - que es coma flotante en informatica
Excepción de punto flotante (4)
Cumplí con éxito este código:
#include <stdio.h>
#include <math.h>
int q;
int main()
{
srand( time(NULL) );
int n=3;
q=ceil(sqrt(n));
printf("%d/n %d/n", n,q);
if(n == 2)
printf("%d/n is prime", n);
else if(n % 2 == 0.0 || n < 2)
printf("%d/n is not prime", n);
else
{
int x;
for(x = 0; x < q; x++){
if(n % x == 0)
{
printf("%d/n is not prime", n);
return;
}
else
printf("%d/n is prime", n);
}
}
}
Pero cuando ejecuto mi código, aparece el siguiente error:
Excepción de punto flotante
¿Qué significa este error y cómo puedo solucionarlo?
Es causado por n % x
, cuando x
es 0. En su lugar, debes tener x start en 2. No debe usar ningún punto flotante aquí, ya que solo necesita operaciones de enteros.
Notas generales:
- Trata de formatear tu código mejor. Enfócate en usar un estilo consistente. Por ejemplo, tiene otra persona que comienza inmediatamente después de un paréntesis (ni siquiera un espacio) y otra con una nueva línea intermedia.
- No use globos globales a menos que sea necesario. No hay ninguna razón para que
q
sea global. - No regrese sin un valor en una función no nula (int).
Es causado por n % x
donde x = 0
en la primera iteración de bucle. No se puede calcular un módulo con respecto a 0.
punto flotante excepton (núcleo volcado), también se produce un error de tiempo de ejecución para este tipo (revise este código de ejemplo en el lenguaje c)
enter code here
#include<stdio.h>
int main()
{
int x,a,b;
int y;
printf("enter two values to find out whether the first is the multiple of the 2nd");
scanf("%d%d",&x,&y);
int result=(b%a);
printf("%d",result);
return 0;
}
http://en.wikipedia.org/wiki/Division_by_zero
http://en.wikipedia.org/wiki/Unix_signal#SIGFPE
Esto debería darte una muy buena idea. Como un módulo es, en su sentido básico, división con un resto, something % 0
IS se divide por cero y, como tal, desencadenará el lanzamiento de un SIGFPE.