Hola.
Me olvidé de comentarte... Otra forma en que podes implementarlo, es utilizando el método de órden de mayor fila (row major order) que es como almacenan la matriz en memoria C y C++. Para obtener el offset de un elemento, hay que realizar:
fila * numero_columnas + columna.
Un ejemplo:
Código:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
int main(int argc, char* argv[])
{
char *mat;
int maxrow, maxcol, row, col;
/* Ingresar dimensión */
printf("Filas: "); scanf("%2d", &maxrow);
printf("\nColumnas: "); scanf("%2d", &maxcol);
/* Crear */
mat = new char[maxrow * maxcol];
/* Cargar la matriz */
randomize();
for(int f=0; f < maxrow; f++)
for(int c=0; c < maxcol; c++)
mat[f * maxcol + c] = random(27)+65;
/* Mostrar la matriz */
for(int f=0; f < maxrow; f++) {
for(int c=0; c < maxcol; c++)
printf("%3c", mat[f * maxcol + c]);
printf("\n");
}
/* Posicionar y mostrar el elemento */
printf("Fila: "); scanf("%2d", &row);
printf("\nColumna: "); scanf("%2d", &col);
printf("%c",mat[row * maxcol + col]);
getch();
/* liberar */
delete [] mat;
return 0;
}
Tomá en cuenta que en el ejemplo las cotas inferiores son cero y las superiores maxrow-1/maxcol-1.
Saludos.