Código C:
Ver original#include <stdio.h>
#define NUM_DE_TABLAS 2
#define ALTO 4
#define ANCHO 4
int main(){
/* Crea la matriz tridimensional */
int M[NUM_DE_TABLAS][ALTO][ANCHO];
/* Indices para manejar la matriz (bucle principal) */
int i, j, k;
/* Indices para manejar la matriz (bucle de busqueda)*/
int si, sj, sk;
/* Numero a leer */
int num;
/* Bandera de repeticion */
int bandera_rep;
/* Inicializa matriz tridimensional */
for(i = 0; i < NUM_DE_TABLAS; i++)
for(j = 0; j < ALTO; j++)
for(k = 0; k < ANCHO; k++)
M[i][j][k] = 0;
for(i = 0; i < NUM_DE_TABLAS; i++)
for(j = 0; j < ALTO; j++)
for(k = 0; k < ANCHO; k++){
num = 0;
bandera_rep = 0;
printf("Dame una couta \nPotal[%d]\nPlanta[%d]\nPuerta[%d]\n", i
+1, j
+1, k
+1);
/*Checamo si ya hay un vecino con la misma couta*/
for(si = 0; si < NUM_DE_TABLAS && !bandera_rep; si++)
for(sj = 0; sj < ALTO && !bandera_rep; sj++)
for(sk = 0; sk < ANCHO && !bandera_rep; sk++)
if(M[si][sj][sk] == num)
bandera_rep = 1;
/* Valor repetido? Si vuelve a preguntar por un numero, no añadelo a la matriz */
if(bandera_rep)
k--;
else
M[i][j][k] = num;
}
for(i = 0; i < NUM_DE_TABLAS; i++){
for(j = 0; j < ALTO; j++){
for(k = 0; k < ANCHO; k++)
printf("M[%d][%d] = %d ", j
, k
, M
[i
][j
][k
]); }
}
return 0;
}