olgha | Bonjour à tous j'ai créé une fonction qui doit décaler une matrice vers le haut et mettre des 0 sur la dernière ligne de la matrice. Le problème est que, quand je compile cela me met segmentation fault. Pouvez vous je vous prie jettez un coup d'oeil à mon code SVP? et m'aider à détecter ce qui cloche?
Code :
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <time.h>
- //#include <string.h>
- float** Allocate_Mat_Memory(int N, int M);
- void genere_mat( float **A, int N, int M );
- void Affiche_Mat( float **A, int N, int M );
- float** decal_haut(float **Mat, int N, int M);
- int main()
- {
- int dim1, dim2;
- float **Mat, **A_dec_haut;
- printf("\n Les dimensions de la matrice sont:\n" );
- printf("Nombre de lignes: " );
- scanf("%d", &dim1);
- printf("Nombre de colonnes: " );
- scanf("%d", &dim2);
- Mat=Allocate_Mat_Memory(dim1, dim2);
- genere_mat(Mat, dim1, dim2);
- printf("La Matrice est:\n\n" );
- Affiche_Mat( Mat, dim1, dim2 );
- printf("La Matrice decalee vers le haut est:\n\n" );
- A_dec_haut = decal_haut(Mat, dim1, dim2);
- Affiche_Mat( A_dec_haut, dim1, dim2 );
- return 0;
- }
- float** Allocate_Mat_Memory(int N, int M)//Cette fonction permet d'allouer de la memoire pour une matrice qulquonque
- {
- int i;
- float **A = NULL;
- // On fait l'allocation de memoire pour un vecteur de N cases, C'est un vecteur de pointeurs
- A = (float**) malloc( sizeof(float*) * N );
- // Si l'allocation à réussi, On fait une allocation de M cases pour chaque ligne
- if( A != NULL )
- for( i=0; i<N; i++ )
- A[i] = (float*) malloc( sizeof(float) * M );
- return A;
- }
- void Affiche_Mat( float **A, int N, int M )// Affichage des éléments de la matrice
- {
- int i, j;
- for(i=0; i<N; i++)
- {
- for(j=0; j<M; j++)
- printf("%f\t", A[i][j]);
- printf("\n" );
- }
- }
- void genere_mat( float **A, int N, int M )//genere les éléments de la matrice de façon aléatoire
- {
- int c,i, j;
- c=255;
- for( i=0; i<N; i++ )
- for( j=0; j<M; j++ )
- {
- A[i][j]=rand()%c;
- }
- }
- float** decal_haut(float **Mat, int N, int M)// decale les elements de la matrice vers le haut
- {
- int i, j;
- float **Mat_dec_haut= NULL;
- Mat_dec_haut = Allocate_Mat_Memory(N, M);
- for( i=0; i<N; i++ )
- {
- for( j=0; j<M; j++ )
- {
- Mat_dec_haut[N-1][j] = 0; // initialisation de la dernière ligne
- Mat_dec_haut[i][j] = Mat[i+1][j];
- }
- }
- return Mat_dec_haut;
- }
|
|