Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/04/2010, 11:15
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Matriz tridimensional en c

Código C:
Ver original
  1. #include <stdio.h>
  2. #define NUM_DE_TABLAS 2
  3. #define ALTO 4
  4. #define ANCHO 4
  5.  
  6. int main(){
  7.  
  8.     /* Crea la matriz tridimensional */
  9.     int M[NUM_DE_TABLAS][ALTO][ANCHO];
  10.  
  11.     /* Indices para manejar la matriz (bucle principal) */
  12.     int i, j, k;
  13.  
  14.     /* Indices para manejar la matriz (bucle de busqueda)*/
  15.     int si, sj, sk;
  16.  
  17.     /* Numero a leer */
  18.     int num;
  19.  
  20.     /* Bandera de repeticion */
  21.     int bandera_rep;
  22.  
  23.     /* Inicializa matriz tridimensional */
  24.     for(i = 0; i < NUM_DE_TABLAS; i++)
  25.         for(j = 0; j < ALTO; j++)
  26.             for(k = 0; k < ANCHO; k++)
  27.                 M[i][j][k] = 0;
  28.  
  29.     for(i = 0; i < NUM_DE_TABLAS; i++)
  30.         for(j = 0; j < ALTO; j++)
  31.             for(k = 0; k < ANCHO; k++){
  32.                 num = 0;
  33.                 bandera_rep = 0;
  34.                 printf("Dame una couta \nPotal[%d]\nPlanta[%d]\nPuerta[%d]\n", i+1, j+1, k+1);
  35.                 scanf("%d", &num);
  36.  
  37.  
  38.                 /*Checamo si ya hay un vecino con la misma couta*/
  39.                 for(si = 0; si < NUM_DE_TABLAS && !bandera_rep; si++)
  40.                     for(sj = 0; sj < ALTO && !bandera_rep; sj++)
  41.                         for(sk = 0; sk < ANCHO && !bandera_rep; sk++)
  42.                             if(M[si][sj][sk] == num)
  43.                                 bandera_rep = 1;
  44.  
  45.  
  46.                 /* Valor repetido? Si vuelve a preguntar por un numero, no añadelo a la matriz */
  47.                 if(bandera_rep)
  48.                     k--;
  49.                 else
  50.                     M[i][j][k] = num;
  51.             }
  52.  
  53.     printf("\n");
  54.     for(i = 0; i < NUM_DE_TABLAS; i++){
  55.         printf("\nTabla %d:\n", i);
  56.         for(j = 0; j < ALTO; j++){
  57.             for(k = 0; k < ANCHO; k++)
  58.                 printf("M[%d][%d] = %d  ", j, k, M[i][j][k]);
  59.             printf("\n");
  60.         }
  61.     }
  62.  
  63.     return 0;
  64. }