Reserva dinámica de memoria - Programación C

viernes, 12 de noviembre de 2010

Después de haber estado trabajando con ficheros, hoy vamos a trabajar la reserva dinámica de memoria programando en C, un factor muy importante para optimizar nuestras aplicaciones. A continuación os dejamos con el ejercicio de reserva dinámica de memoria.

Ejercicio:

Realizar un programa que:

  1. Solicitar insertar cuantas filas y columnas se desea que tenga la matriz
  2. Insertar la matriz
  3. Convertir una nueva matriz con su inversa
  4. Mostrarla en pantalla
Realizar este ejercicio usando la reserva dinámica de memoria

Para ver la solución continúa leyendo.


******   Inicio programa ******/


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


int **Asigmemoria(int fil, int col);

void Rellenar(int **matriz,int fil, int col);

void Inversa(int **matriz, int **aux,int fil, int col);


main()

{

      int fila, colum, **matriz, **aux;

      char str[8];


      printf("Mete cuantas filas quieres que tenga la matriz: ");

      gets(str);

      sscanf(str,"%d",&fila);

      printf("Mete cuantas columnas quieres que tenga la matriz: ");

      gets(str);

      sscanf(str,"%d",&colum);



      matriz=Asigmemoria(fila,colum);

      Rellenar(matriz,fila,colum);

      aux=Asigmemoria(colum,fila);

      Inversa(matriz,aux,fila,colum);

      free(matriz);

      free(aux);

      getchar();

}


int **Asigmemoria(int fil, int col)

{

    int **mat,i;

    mat=(int**)malloc(sizeof(int)*fil);

    for(i=0;i<fil;i++)

       mat[i]=(int*)malloc(sizeof(int)*col);

    return (mat);

}



void Rellenar(int **matriz,int fil, int col)

{

    int i,j,num;

    char st[10];


    printf("Inserta los valores que quieras: \n \n");

    for(i=0;i<fil;i++)

    {

       for(j=0;j<col;j++)

       {

          printf("a(%d,%d) : \n",i+1,j+1);

          gets(st);

          sscanf(st,"%d",&num);

          matriz[i][j]=num;

       }
    }
}


void Inversa(int **matriz, int **aux,int fil, int col)

{

     int i,j;


     printf("Matriz actual: \n");

     for(i=0;i<fil;i++)

    {

       for(j=0;j<col;j++)

       {

          printf("%d",matriz[i][j]);
       }

       printf("\n");
    }
    printf("\n");


    /*Convertir a matriz inversa*/


    for(i=0;i<fil;i++)

    {

       for(j=0;j<col;j++)

       {

          aux[j][i]=matriz[i][j];

       }

    }


    printf("Matriz inversa: \n");

    for(i=0;i<col;i++)

    {

       for(j=0;j<fil;j++)

       {

          printf("%d",aux[i][j]);

       }

       printf("\n");

    }

}

/******   Fin programa******/

Artículos relacionados


Comments

No response to “ Reserva dinámica de memoria - Programación C ”
Post a Comment | Enviar comentarios ( Atom )

Publicar un comentario

Deja tu opinión realizando un comentario interesante. Cualquier intento de Spam no será admitido.