Salut,
j'ai besoin de traiter une matrice pour mettre tout les éléments null de la matrice à la fin de la matrice.
Pour ne pas trop compliqué les chose j'ai ponçer à manipuler la matrice comme étant un vecteur,
pour cela on peut accéder à l'element t[i][j] d'une matrice de N lignes et de M colonnes en fesant:
t[ i*M + j ] .
voici la fonction que j'ai fait pour l'instant:
Code :
- void Compactage( int **mat, int N, int M )
- {
- int i, j, L, C, cptNull = 0;
- printf("\nCompactage :\n\n" );
- for( i=0; i<N; i++ )
- for( j=0; j<M; j++ )
- if( mat[i*M+j] == 0 ) // si l'element est null :
- {
- cptNull++; // on compte.
- for( L=i; L<N; L++ )
- for( C=j; C<M; C++ )
- mat[L*M+C] = mat[L*M+C + 1]; // on fait le decalage
- }
- /* On met les cptNull derniers element de la matrice à 0 */
- for( i=N*M-1; cptNull; i-- )
- {
- cptNull--;
- mat[i] = 0;
- }
- }
|
mais ça ne fait pas le compactage! ( ça ne met pas tout les element null à la fin de la matrice )..
et je ne vois pas où le probléme peut il bien être...
merci.