Ver Mensaje Individual
  #3  
Antiguo 27-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 28-05-2012 a las 05:54:29. Razón: corrección ortográfica
Responder Con Cita