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?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
 
#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;
}