Floating point exception( core dump

184,127

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

Share:
184,127

Related videos on Youtube

X_Trust
Author by

X_Trust

Updated on July 09, 2022

Comments

  • X_Trust
    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 ;
    
    }