¿Y cual es la duda que tienes?
¿Si tienes que usar la dinámica con las matrices?
Con las matrices bidimencionales la forma es hacer como una especie de tabla de tablas
Se usa puntero que apunta a puntero.Primero se crea el puntero que apunta otro puntero que sera las fila, eso permite guardar otro puntero que sera la columna y por eso debe ser un puntero a puntero. Se usa igual que una matriz bidimensional normal, accediendo de esta forma tabla[10][7] = unvalor;
El ejemplo y la explicación la tienes aquí:
http://c.conclase.net/curso/?cap=017#inicio
Código C++:
Ver original#include <iostream>
using namespace std;
int main() {
int ** tabla;//"tabla" es un puntero que apunta a un objeto de tipo puntero a int."puntero a puntero"
int n = 134;
int m = 231;
int i;
// Sabemos que un puntero se comporta casi igual que un array, por lo tanto nada nos impide que
// "tabla" apunte al primer elemento de un array de punteros:
tabla = new int * [n];
// Ahora estamos en un caso similar, "tabla" apunta a un array de punteros a int,
// cada elemento de este array puede ser a su vez un puntero al primer elemento de otro array:
// n arrays de m ints
for ( i = 0; i < n; i++ ) {
tabla[i] = new int[m];
}
// Ahora tabla apunta a un array de dos dimensiones de n * m, podemos acceder a cada elemento
// igual que accedemos a los elementos de los arrays normales:
tabla[21][33] = 123;
cout << tabla[21][33] << endl;
// Otra diferencia con los arrays normales es que antes de abandonar el programa hay que liberar
// la memoria dinámica usada, primero la asociada a cada uno de los punteros de "tabla[i]":
// Liberar memoria:
for ( i = 0; i < n; i++ ) { delete[] tabla[i]; }
// Y después la del array de punteros a int, "tabla":
delete[] tabla;
return 0;
}//END OF MAIN
Es muy importante no olvidar usar el delete después para liberar la memoria antes de terminar la función se suele usar los destructores para que se encarguen de realizar esa tarea por ti cuando uses las clases, usa los destructores para liberar la memoria.