Floating point exception( core dump
Solution 1
You are getting Floating point exception because Number % i
, when i
is 0
:
int Is_Prime( int Number ){
int i ;
for( i = 0 ; i < Number / 2 ; i++ ){
if( Number % i != 0 ) return -1 ;
}
return Number ;
}
Just start the loop at i = 2
. Since i = 1
in Number % i
it always be equal to zero, since Number is a int.
Solution 2
Floating Point Exception happens because of an unexpected infinity or NaN. You can track that using gdb, which allows you to see what is going on inside your C program while it runs. For more details: https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_gdb.php
In a nutshell, these commands might be useful...
gcc -g myprog.c
gdb a.out
gdb core a.out
ddd a.out
Related videos on Youtube
X_Trust
Updated on July 09, 2022Comments
-
X_Trust almost 2 years
Program: So I made a program that take two numbers, N and L. N is the size of a 2D array and L is a number from 3 - 16. The program builds the array and starts at the center and works its way out in a counter clockwise spiral. I is the value of the center and its as you go through the array( in the spiral ) the value will increase by one. It it is prime, that number will be assigned to that spot and if not it * will take its place instead.
Error: I'm getting a "Floating point exception " error, how would I solve this?
Code:
void Array_Loop( int *Array, int n, int L ) ; int Is_Prime( int Number ) ; int main( int argc, char *argv[] ){ int **Array ; int n, L ; n = atoi( argv[1] ) ; L = atoi( argv[2] ) ; Matrix_Build( &Array, n, n ) ; Array_Loop( Array, n, L ) ; return 0 ; } void Array_Loop( int *Array, int n, int L ){ int i, j, k, h ; int lctn, move; lctn = n / 2 + 1 ; i = lctn ; j = lctn ; move = 1 while( i != 0 && j != n ){ for( j = lctn ; j < lctn + move ; j++ ){ if( L % 2 == 2) Array[i][j] = -1 ; else Array[i][j] = Is_Prime( L ) ; L++ ; } move = move * -1 ; for( i = i ; i > lctn - move ; i-- ){ if( L % 2 == 2) Array[i][j] = -1 ; else Array[i][j] = Is_Prime( L ) ; L++ ; } move-- ; for( j = j ; j > lctn - move ; j-- ){ if( L % 2 == 2) Array[i][j] = -1 ; else Array[i][j] = Is_Prime( L ) ; L++ ; } move = move * -1 ; for( i = i ; i < lctn - move ; i-- ){ if( L % 2 == 2) Array[i][j] = -1 ; else Array[i][j] = Is_Prime( L ) ; L++ ; } move++ ; } } int Is_Prime( int Number ){ int i ; for( i = 0 ; i < Number / 2 ; i++ ){ if( Number % i != 0 ) return -1 ; } return Number ; }