martes, 12 de agosto de 2014

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");
 }
}

0 comments:

Publicar un comentario