decaler une matrice vers le haut

decaler une matrice vers le haut - C - Programmation

Marsh Posté le 15-05-2012 à 10:33:14    

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 :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <time.h>
  5. //#include <string.h>
  6. float** Allocate_Mat_Memory(int N, int M);
  7. void genere_mat( float **A, int N, int M );
  8. void Affiche_Mat( float **A, int N, int M );
  9. float** decal_haut(float **Mat, int N, int M);
  10. int main()
  11. {
  12. int dim1, dim2;
  13.   float **Mat, **A_dec_haut;
  14.   printf("\n Les dimensions de la matrice sont:\n" );
  15.   printf("Nombre de lignes: " );
  16.   scanf("%d", &dim1);
  17.   printf("Nombre de colonnes: " );
  18.   scanf("%d", &dim2);
  19.   Mat=Allocate_Mat_Memory(dim1, dim2);
  20.   genere_mat(Mat, dim1, dim2);
  21.   printf("La Matrice est:\n\n" );
  22.   Affiche_Mat( Mat, dim1, dim2 );
  23.   printf("La Matrice decalee vers le haut est:\n\n" );
  24.   A_dec_haut = decal_haut(Mat, dim1, dim2);
  25.   Affiche_Mat( A_dec_haut, dim1, dim2 );
  26. return 0;
  27. }
  28. float** Allocate_Mat_Memory(int N, int M)//Cette fonction permet d'allouer de la memoire pour une matrice qulquonque  
  29. {
  30. int i;
  31. float **A = NULL;
  32. // On fait l'allocation de memoire pour un vecteur de N cases, C'est un vecteur de pointeurs  
  33. A = (float**) malloc( sizeof(float*) * N );
  34. // Si l'allocation à réussi, On fait une allocation de M cases pour chaque ligne  
  35. if( A != NULL )
  36. for( i=0; i<N; i++ )
  37. A[i] = (float*) malloc( sizeof(float) * M );
  38. return A;
  39. }
  40. void Affiche_Mat( float **A, int N, int M )// Affichage des éléments de la matrice  
  41. {
  42. int i, j;
  43. for(i=0; i<N; i++)
  44. {
  45.    for(j=0; j<M; j++)
  46.      printf("%f\t", A[i][j]);
  47.      printf("\n" );
  48. }
  49. }
  50. void genere_mat( float **A, int N, int M )//genere les éléments de la matrice de façon aléatoire  
  51. {
  52. int c,i, j;
  53. c=255;
  54. for( i=0; i<N; i++ )
  55.   for( j=0; j<M; j++ )
  56.     {
  57.       A[i][j]=rand()%c;
  58.     }
  59. }
  60. float** decal_haut(float **Mat, int N, int M)// decale les elements de la matrice vers le haut
  61. {
  62.   int i, j;
  63.   float **Mat_dec_haut= NULL;
  64.   Mat_dec_haut = Allocate_Mat_Memory(N, M);
  65.   for( i=0; i<N; i++ )
  66.     {
  67.          for( j=0; j<M; j++ )
  68.          {
  69.            Mat_dec_haut[N-1][j] = 0; // initialisation de la dernière ligne
  70.            Mat_dec_haut[i][j] = Mat[i+1][j];
  71.          }
  72.   }
  73. return Mat_dec_haut;
  74. }

Reply

Marsh Posté le 15-05-2012 à 10:33:14   

Reply

Marsh Posté le 15-05-2012 à 10:49:59    

solution trouvée, juste un problème de notation.  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed