Exception de virgule flottante (core dump
Programme: j'ai Donc fait un programme qui se déroule sur deux numéros, N et L. N est la taille d'un tableau 2D et L est un nombre de 3 - 16. Le programme s'appuie le tableau et commence au centre et travaille son chemin dans un sens anti-horaire en spirale. I est la valeur du centre et de son que vous allez par le biais de la matrice( dans la spirale ) la valeur augmente d'un. Il est le premier, ce numéro sera attribué à cet endroit et, si non, elle * prendra sa place.
Erreur: je suis un "Floating point exception" erreur, comment pourrais-je résoudre ce problème?
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 ;
}
source d'informationauteur X_Trust
Vous devez vous connecter pour publier un commentaire.
Vous obtenez l'exception de virgule Flottante, car Nombre % i, lorsque je est 0:
Juste de commencer la boucle de i = 2. Depuis i = 1 à Nombre % i-il toujours être égal à zéro, car le chiffre est un int.
Btw: Mysticial ont fait le point sur les commentaires.
Floating Point Exception se produit en raison d'un imprévu de l'infini ou de NaN.
Vous pouvez suivre que l'utilisation de gdb, qui vous permet de voir ce qui se passe à l'intérieur de votre programme C alors qu'il s'exécute. Pour plus de détails:
https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_gdb.php
En un mot, ces commandes peuvent être utiles...
gcc -g myprog.c
gdb a.out
gdb core a.out
ddd a.out