Mostrando las entradas con la etiqueta matrices. Mostrar todas las entradas
Mostrando las entradas con la etiqueta matrices. Mostrar todas las entradas

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