Matrices dinámicas en C


No explicaré qué se hace en cada paso, sólo le mostrare el código que tengo, y ustedes se encargarán de analizarlo y modificarlo a su conveniencias. Bueno el código es el siguiente.


#include <stdio.h>
#include <stdlib.h>

void llenarMatriz(int ** mat, int filas, int columnas);
void imprimirMatriz(int ** mat, int filas, int columnas);
void crearMatrizDinamica(int ** mat, int filas, int columnas);
void liberarMemoria(int ** array, int nrows);

int main(void){
int nrows,ncols;
int** array;
// Define the size of the array at run time
printf("Ingrese el numero de filas y colunmas: ");
scanf("%d %d",&nrows,&ncols);

array=(int**)malloc(nrows*sizeof(int*));

crearMatrizDinamica(array,nrows,ncols);
llenarMatriz(array,nrows,ncols);
imprimirMatriz(array,nrows,ncols);
liberarMemoria(array,nrows);
return 0;
}

void liberarMemoria(int ** array, int nrows){
int i;
for (i=0; i<nrows; i++){
free((void*)array[i]);
}
free((void*)array);
}

void crearMatrizDinamica(int ** mat, int filas, int columnas){
int i;
for (i=0; i<filas; i++)
mat[i]=(int*)malloc(columnas*sizeof(int));
}
void llenarMatriz(int ** mat, int filas, int columnas){
int i,j;
for(i=0;i<filas;i++){
for(j=0;j<columnas;j++){
mat[i][j]=i+1+j;
}
}
}

void imprimirMatriz(int ** mat, int filas, int columnas){
int i,j;
for(i=0;i<filas;i++){
for(j=0;j<columnas;j++){
printf("-%d-",mat[i][j]);
}
printf("n");
}
}

Comentarios:

@