Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/06/2012, 14:07
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: Programa matriz transversa c++

Buenas,

El error es complicado de ver, pero se trata de un pequeño matiz a la hora de crear la memoria con new.

Fíjate en la diferencia:

Código C++:
Ver original
  1. //Estoy inicializando memoria para una variable de tipo entero y asignandole el valor 5
  2. int *puntero = new int(5);
  3.  
  4. //Estoy inicializando memoria para 5 variables de tipo entero (consecutivas en memoria)
  5. int *puntero = new int[5];

Ahora fíjate en tu código:

Código C++:
Ver original
  1. int **trans(int **a, unsigned n, unsigned m) {
  2.     unsigned i,j;int **at;
  3.     at=new int *[m]; // ahora las filas es m
  4.     for(i=0;i<m;i++)
  5.    //Incorrecto, estás inicializando para una sóla columna
  6.    // at[i]=new int(n); // y las columnas es n
  7.      //Correcto  
  8.      at[i]=new int[n]; // y las columnas es n
  9.     for(i=0;i<n;i++){
  10.         for(j=0;j<m;j++)
  11.             at[j][i]=a[i][j];
  12.     }
  13.     return at;
  14. }

Saludos.