decaler une matrice vers le haut - C - Programmation
MarshPosté 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 :
#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
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?