Está en la página 1de 2

Problema de memoria dinamica :

#include <stdio.h>
#include <stdlib.h>
typedef float ** TMatriz;
void LeerDim(TMatriz m,int *fil, int *col);
TMatriz SeparaMem(int fil,int col);
void LeeMatriz(TMatriz m,int fil,int col);
void EscribeMatriz(TMatriz m,int fil,int col);
void LiberaMatriz(TMatriz m,int fil);
int main(){
float **m;
int fil,col,i,j;
LeerDim(m,&fil,&col);
//reservar espacio de memoria
m=SeparaMem(fil,col);
if (m==NULL){
printf("No hay espacio suficiente");
return 0;
}
else{
//Ingreso de datos
LeeMatriz(m,fil,col);
EscribeMatriz(m,fil,col);
//Liberar espacio de memoria
LiberaMatriz(m,fil);
}
return 0;
}
void LiberaMatriz(TMatriz m,int fil){
int i;
for (i=0;i<fil;i++)
free(*(m+i));
free(m);
}
void EscribeMatriz(TMatriz m,int fil,int col){
int i,j;
printf("Elementos de la matriz\n");
for (i=0;i<fil;i++){

for (j=0;j<col;j++)
printf("%.2f
printf("\n");
}

",m[i][j]);

}
void LeeMatriz(TMatriz m,int fil,int col){
int i,j;
printf("Ingrese los elementos por filas\n");
for (i=0;i<fil;i++){
printf("Fila %d=",i+1);
for (j=0;j<col;j++)
scanf("%f",&m[i][j]);
}
}
TMatriz SeparaMem(int fil,int col){
TMatriz aux;
int i;
aux = (float **) malloc(fil*sizeof(float *));
for (i=0;i<fil;i++)
*(aux+i)=malloc(col*sizeof(float));
return aux;
}
void LeerDim(TMatriz m,int *fil, int *col){
printf("fil,col= ");
scanf("%d%d",fil,col);
}

También podría gustarte