Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/02/2017, 06:25
aguml
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: problemas con punteros y matrices

He estado intentando solucionarlo pero tengo un lio muy gordo. Ahora mismo lo tengo asi pero al rellenar el array lo desbordo y no veo como hacerlo de la forma correcta:
Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void solicitar_dimensiones( int *f, int *c)
  6. {
  7.     cout << "Ingrese el numero de filas para la matriz : ";
  8.     cin >> *f;
  9.     cout << "\nIngrese el numero de columnas para la matriz : ";
  10.     cin >> *c;
  11. }
  12.  
  13. void pedir_memoria(int ***a,int f,int c)
  14. {
  15.     a[0]= new int*[f];
  16.     for (int i = 0; i <f; i++)
  17.     {
  18.         a[0][i] = new int[c];
  19.     }
  20. }
  21.  
  22. void rellenar_matriz(int ***a,int indice,int f,int c)
  23. {
  24.     cout << "\nIngrese los valores de la matriz " << indice <<" : ";
  25.     for (int i = 0; i < f; i++)
  26.     {
  27.         for (int j = 0; j < c; j++)
  28.         {
  29.             cout << "\nIngrese el elemento [ " << i << ", " << j << " ]: ";
  30.             cin >> *a[i][j];
  31.         }
  32.         printf("\n");
  33.     }
  34. }
  35.  
  36. void sumar_matrices (int ***a,int ***puntm2,int ***puntm,int f, int c)
  37. {
  38.     for (int i = 0; i < f; i++)
  39.     {
  40.         for (int j = 0; j < c; j++)
  41.         {
  42.             *(a[i][j])= *(puntm[i][j]) + *(puntm2[i][j]);
  43.         }
  44.     }
  45. }
  46.  
  47. void liberar_memoria(int **a,int f)
  48. {
  49.     for (int i = 0; i <f; i++)
  50.     {
  51.         delete[] a[i];
  52.     }
  53.     delete[] a;
  54. }
  55.  
  56. void imprimir_matriz(int **a, int f, int c )
  57. {
  58.     cout << "\nLa matriz final es: \n";
  59.     for (int i = 0; i < f; i++)
  60.     {
  61.         for (int j = 0; j < c; j++)
  62.         {
  63.             cout << a[i][j] <<endl;
  64.         }
  65.     }
  66. }
  67.  
  68. int main()
  69. {
  70.     int f,c;
  71.     int **psumas;
  72.     int **pmatriz2;
  73.     int **pmatriz1;
  74.  
  75.     solicitar_dimensiones(&f,&c);
  76.     pedir_memoria(&pmatriz1,f,c);
  77.     pedir_memoria(&pmatriz2,f,c);
  78.     pedir_memoria(&psumas,f,c);
  79.  
  80.     rellenar_matriz(&pmatriz1,1,f,c);
  81.     rellenar_matriz(&pmatriz2,2,f,c);
  82.  
  83.     sumar_matrices(&psumas,&pmatriz2,&pmatriz1,f,c);
  84.  
  85.     imprimir_matriz(psumas,f,c);
  86.  
  87.     liberar_memoria(pmatriz1,f);
  88.     liberar_memoria(pmatriz2,f);
  89.     liberar_memoria(psumas,f);
  90.     return 0;
  91. }