Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/11/2013, 15:21
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 2 meses
Puntos: 83
Respuesta: Valido ingreso coordenada a una matriz, en C

Tienes dos opciones: usar un flag de estado para cada celda o crear una nueva lista de coordenadas que en vez de guardar el valor guarden el flag de estado; es mas facil hacerlo todo en uno.

Primero declaras las definiciones:

Código C:
Ver original
  1. #define FILS    3
  2. #define COLS    3
  3. #define IVALOR  0
  4. #define IVISTO  1

Despues la matriz que ahora incluye un espacio extra para el flag de estado, y la rellenas dejando inicialmente como no visitado:

Código C:
Ver original
  1. int mat[FILS][COLS][2], i, j;
  2.  
  3. srand(time(NULL));
  4. for(i=0; i<FILS; i++) {
  5.     for (j=0; j<COLS; j++) {
  6.         mat[i][j][IVALOR] = rand()%10;//sitio para el valor
  7.         mat[i][j][IVISTO] = 0;//flag de estado, inicialmente como no visitado
  8.     }
  9. }

Ahora solo tienes que pedir coordenadas y comprovar el flag, si no está marcado como visto es que es valido, y una vez visitado lo marcas para evitar siguientes accesos

Código C:
Ver original
  1. printf("\nIngrese fila : ");
  2. scanf("%d",&f);
  3. printf("\nIngrese Columna : ");
  4. scanf("%d",&c);
  5. if(!mat[f][c][IVISTO]) {
  6.     mat[f][c][IVISTO] = 1;
  7. }

Ten en cuenta que te falta la comprovacion de error para asegurar que la fila y la columna estan en el rango valido, de lo contrario se producirá una violacion de acceso (segmentation fault).

*Nota: los defines son para clarificar el codigo, en este caso son muy evidentes y no serian necesarios pero te facilitaran el trabajo en caso que quieras modificar algun valor.

Saludos
vosk