Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/06/2012, 01:42
Fw190
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 10 meses
Puntos: 73
Respuesta: error en tipo de datos matriz c++

Primero, estás utilizando nca y nfa (que, supongo, se refieren a número de columnas y de filas) sin haberles asignado valor alguno, por lo que tomarán valores aleatorios.

Segundo, para lo que estás empleando estas variables es para reservar memoria de forma dinámica. Aunque el compilador haga la conversión correspondiente, debido a que los valores que hayan tomado son aleatorios, puede que sean valores no válidos para una reserva de memoria.

Tercero, estás utilizando variables de tipo double como variables de control para bucles e índices para los elementos de la matriz. No es ilegal, pero tampoco conveniente. Para esto, utiliza valores int o unsigned int.

Cuarto, estás devolviendo un doble puntero a double en una función que has declarado como que retorna un double.

Para transponer una matriz, sería más sencillo así:

Código C++:
Ver original
  1. void Trans1(double **A, unsigned filas, unsigned cols)
  2. {
  3. double x;
  4. for (int i=0; i<filas; i++)
  5. for (int j=0; j<columnas; j++)
  6. {
  7. x = A[i][j];
  8. A[i][j] = A[j][i];
  9. A[j][i] = x;
  10. }

Esta te sobreescribe la matriz de entrada. Si necesitas conservar la matriz de entrada, tendrás que pasar también la matriz de salida:

Código C++:
Ver original
  1. void Trans2(double **A, double **B, unsigned filas, unsigned cols)
  2. {
  3. for (int i=0; i<filas; i++)
  4. for (int j=0; j<columnas; j++)
  5. B[i][j] = A[j][i];
  6. }

Claro está, suponiendo que las matrices A y B han sido convenientemente creadas antes de llamar a la función.