Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: piyor6 en 4 Mayo 2018, 06:34 am



Título: suma de dos matrices dinamicas con punteros
Publicado por: piyor6 en 4 Mayo 2018, 06:34 am
saludos a todos, hoy tengo un problema con un ejercicio y el problema esque se como se hace en c++ pero no se como hacerlo en c, para ser mas espesifico necesito reservar memoria con punteros en c lo cual creo que se hace con malloc y pues yo hice el programa en c pero con extensión c++ para que corra new y el delet con que se resrva la memoria.

lo que necesito es este mismo programa pero acomodado al c (osea con malloc)

(este codigo copila perfecto si esta con estencion c++)

agradezco su ayuda muchas gracias
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void pedirdatos();
  5. void sumarmatriz(int **,int **,int,int);
  6. void mostrarmatriz(int **,int,int);
  7.  
  8. int **pmatriz1,**pmatriz2,filas,columnas;
  9.  
  10. int main(){
  11.  
  12. pedirdatos();
  13. sumarmatriz(pmatriz1,pmatriz2,filas,columnas);
  14. mostrarmatriz(pmatriz1,filas,columnas);
  15.  
  16.  for(int i=0;i<filas;i++){
  17.      delete[] (pmatriz2+i);
  18.  }
  19.  delete[] pmatriz2;
  20.  
  21.  for(int i=0;i<filas;i++){
  22.      delete[] (pmatriz1+i);
  23.  }
  24.  delete[] pmatriz1;
  25.  
  26.  
  27.  
  28.  
  29.  
  30.    return 0;
  31. }
  32.  
  33. void pedirdatos(){
  34.    printf("ingrese el numero de filas: ");
  35.    scanf("%d",&filas);
  36.    printf("ingrese el numero de columnas: ");
  37.    scanf("%d",&columnas);
  38. //reservando memeoria
  39. printf("matriz #1\n");
  40. pmatriz1=new int*[filas];//reservar memoria para filaz
  41. for(int i=0;i<filas;i++){
  42.    *(pmatriz1+i)=new int[columnas];//resevar columnas
  43.    }
  44.    //llenando matriz 1
  45.    for(int i=0;i<filas;i++){
  46.        for(int j=0;j<filas;j++){
  47.            printf("digite un numero: ");
  48.            scanf("%d",&*(*(pmatriz1+i)+j));
  49.  
  50.        }
  51.  
  52.    }
  53.  
  54. printf("matriz #2\n");
  55. //reservando memoria
  56.    pmatriz2=new int*[filas];//reservar memoria para filaz
  57. for(int i=0;i<filas;i++){
  58.    *(pmatriz2+i)=new int[columnas];//resevar columnas
  59.    }
  60.    //llenando matriz 2
  61.    for(int i=0;i<filas;i++){
  62.        for(int j=0;j<filas;j++){
  63.            printf("digite un numero: ");
  64.            scanf("%d",&*(*(pmatriz2+i)+j));
  65.  
  66.        }
  67.  
  68.    }
  69. }
  70.  
  71. void sumarmatriz(int **pmatriz1,int**pmatriz2,int filas,int columnas){
  72. for(int i=0;i<filas;i++){
  73.    for(int j=0;j<filas;j++){
  74.        *(*(pmatriz1+i)+j)= *(*(pmatriz1+i)+j)+ *(*(pmatriz2+i)+j);
  75.        }
  76.  
  77.  
  78. }
  79.  
  80.  
  81.  
  82.  
  83. }
  84. void mostrarmatriz(int **pmatriz1,int filas,int columnas ){
  85. printf("la suma de las dos matrices es:\n");
  86.  
  87. for(int i=0;i<filas;i++){
  88.    for(int j=0;j<filas;j++){
  89.        printf("%d ",*(*(pmatriz1+i)+j));
  90.  
  91.        }
  92.        printf("\n");
  93.    }
  94.  
  95.  
  96.  
  97. }
  98.  
  99.  
  100.  
  101.  


Título: Re: suma de dos matrices dinamicas con punteros
Publicado por: Kenji-chan en 4 Mayo 2018, 21:24 pm
solo tienes que utilizar la funcion void *malloc(size_t size) para reservar la memoria y void free(void *ptr) para liberarla

ejemplo

Código
  1. int* filas = (int*)malloc(sizeof(int)*num);// reservamos memoria
  2.  int i;
  3.  for(i=0; i<num; i++){
  4.    filas[i] = i+1;
  5.  }
  6.  free(filas);//liberamos memoria
  7.  




Título: Re: suma de dos matrices dinamicas con punteros
Publicado por: piyor6 en 6 Mayo 2018, 17:27 pm
pdrias implementar eso que me dijiste en mi codigo y asi entiendo mejor