Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Matriz tridimensional en c

Estas en el tema de Matriz tridimensional en c en el foro de C/C++ en Foros del Web. Hola chicos tengo el siguiente ejercicio: /*6. Cálculo de la mayor cuota de comunidad de los vecinos de una mancomunidad de 3 porta-les, 4 plantas ...
  #1 (permalink)  
Antiguo 17/04/2010, 05:17
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 1 mes
Puntos: 2
Matriz tridimensional en c

Hola chicos tengo el siguiente ejercicio:
/*6. Cálculo de la mayor cuota de comunidad de los vecinos de una mancomunidad
de 3 porta-les, 4 plantas por portal y 3 puertas por planta, realizando previamente
la carga de la tabla correspondiente. Se debe tener en cuenta que la cuota
mínima de comunidad son 20 € y que no puede haber dos vecinos con la misma
cuota. Al visualizar la cuota mayor se indi-cará en pantalla el portal,
planta y puerta del vecino con cuota mayor. */
lo que voy consiguiendo hasta ahora es lo siguiente:

Código C:
Ver original
  1. /*6.    Cálculo de la mayor cuota de comunidad de los vecinos de una mancomunidad
  2. de 3 porta-les, 4 plantas por portal y 3 puertas por planta, realizando previamente
  3.  la carga de la tabla correspondiente. Se debe tener en cuenta que la cuota
  4.  mínima de comunidad son 20 € y que no puede haber dos vecinos con la misma
  5.  cuota. Al visualizar la cuota mayor se indi-cará en pantalla el portal,
  6.  planta y puerta del vecino con cuota mayor.      */
  7.  
  8.  #include<stdio.h>
  9.  
  10.  int main(){
  11.  
  12.  int mat[3][4][3],i,j,k,aux;
  13.  
  14.  
  15.  for(i=0;i<3;i++){
  16.     for(j=0;j<4;j++){
  17.         for(k=0;k<3;k++){
  18.         do{
  19.         printf("Cuota del Portal %d,planta %d y puerta %d\n",i,j,k);
  20.         scanf("%d",&mat[i][j][k]);
  21.  
  22.  
  23.             if(mat[i][j][k]<=20){
  24.             printf("Error,la cuota debe de ser mayor que 20 euros\n");
  25.  
  26.             }
  27.           /*     else{
  28.              aux=mat[i][j][k];
  29.  
  30.             }*/
  31.  
  32.             }while(mat[i][j][k]<20 && aux==mat[i][j][j]);
  33.         }
  34.         }
  35.  
  36.         }
  37.  
  38.  
  39.         //visualizacion en matriz
  40.  
  41.          for(i=0;i<3;i++){
  42.              for(j=0;j<4;j++){
  43.                  for(k=0;k<3;k++){
  44.                     printf("\t\n[%d][%d][%d]=%d  ",i,j,k,mat[i][j][k]);
  45.                     }
  46.                      printf("\n");
  47.                     }
  48.  
  49.                   }
  50.       return 0;
  51. }


Porfis si me podeis hechar una mano aunque sea con el algoritmo .. besos y thanks..
  #2 (permalink)  
Antiguo 17/04/2010, 21:55
Avatar de 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

Claro que te ayudo, mira puedes ver los arreglos tridimensionales como un arreglo de arreglos bidimensionales. A continuación un pequeño programita que imprime un arreglo tridimensional.

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  
  5.     int M[4][2][2];
  6.     int i, j, k;
  7.  
  8.     for(i = 0; i < 4; i++)
  9.         for(j = 0; j < 2; j++)
  10.             for(k = 0; k < 2; k++)
  11.                 M[i][j][k] = i*4 + j*2 + k;
  12.  
  13.     for(i = 0; i < 4; i++){
  14.         printf("\nTabla %d:\n", i);
  15.         for(j = 0; j < 2; j++){
  16.             for(k = 0; k < 2; k++)
  17.                 printf("M[%d][%d] = %d  ", j, k, M[i][j][k]);
  18.             printf("\n");
  19.         }
  20.     }
  21.  
  22.     return 0;
  23. }
  #3 (permalink)  
Antiguo 18/04/2010, 04:30
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Matriz tridimensional en c

Hola,gracias por responder razpeita,veras mi programa tira pero hay una parte que no se como hacerlo,es en relacion a como conseguir que los valores no se repitan se ke debo meterlo en el do{ }while,pero no se como al ser 3 indices me lio .. y no me sale, como muxo lo unico que consegui hace un rato es que me compare con el anterior introducido pero quiero que me compare con todos los valores que ya se hallan introducido y que si es igual a uno de ello me diga errror y no me lo coja para la matriz..

Código C:
Ver original
  1. /*6.    Cálculo de la mayor cuota de comunidad de los vecinos de una mancomunidad
  2. de 3 porta-les, 4 plantas por portal y 3 puertas por planta, realizando previamente
  3.  la carga de la tabla correspondiente. Se debe tener en cuenta que la cuota
  4.  mínima de comunidad son 20 € y que no puede haber dos vecinos con la misma
  5.  cuota. Al visualizar la cuota mayor se indi-cará en pantalla el portal,
  6.  planta y puerta del vecino con cuota mayor.      */
  7.  
  8.  #include<stdio.h>
  9.  
  10.  int main(){
  11.  
  12.  int mat[3][4][3],i,j,k,aux,max=0,imax=0,jmax=0,kmax=0;
  13.  
  14.  
  15.  for(i=0;i<3;i++){
  16.     for(j=0;j<4;j++){
  17.         for(k=0;k<3;k++){
  18.         do{
  19.         printf("Cuota del Portal %d,planta %d y puerta %d\n",i,j,k);
  20.          scanf("%d",&mat[i][j][k]);
  21.  
  22.  
  23.             if(mat[i][j][k]<=20){
  24.             printf("Error,la cuota debe de ser mayor que 20 euros\n");
  25.             }
  26.  
  27.             /*conseguir que no se repitan
  28.             if(mat[i][j][k]!=aux){
  29.  
  30.              if(mat[i][j][k]!=aux){
  31.              aux=mat[i][j][k];
  32.              }
  33.               else{
  34.  
  35.              printf("\nError,cuota insertada anteriormente");
  36.              }
  37.              */
  38.             }while(mat[i][j][k]<20);
  39.  
  40.             if(mat[i][j][k]>max){//para  conseguir la cuota maxima y la ubicacion de la cuota maxima
  41.             max=mat[i][j][k];
  42.             imax=i;
  43.             jmax=j;
  44.             kmax=k;
  45.             }
  46.  
  47.  
  48.         }
  49.         }
  50.  
  51.         }
  52.  
  53.  
  54.         //visualizacion en matriz
  55.  
  56.          for(i=0;i<3;i++){
  57.              for(j=0;j<4;j++){
  58.                  for(k=0;k<3;k++){
  59.                     printf("\t\n[%d][%d][%d]=%d  ",i,j,k,mat[i][j][k]);
  60.                     }
  61.                      printf("\n");
  62.                     }
  63.  
  64.                   }
  65.  
  66.                   printf("\nLa cuota maxima pagada fue del portal %d planta %d y puerta %d cuota:%d",imax,jmax,kmax,max);
  67.       return 0;
  68. }

mmm.. ke estreessante que no me salga
  #4 (permalink)  
Antiguo 18/04/2010, 11:15
Avatar de 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. }

Etiquetas: matriz
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:17.