Advertisement
rohan_

(funciones y matrices) camping

Oct 22nd, 2017
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.78 KB | None | 0 0
  1. /*
  2. autor: Jean Rodriguez H.
  3. fecha: Miercoles 19 de Octubre, 2017
  4. nombre del programa: sombras en el camping.
  5. descripcion: dado el ancho,el largo de una parcela y una cantidad de arboles, muestra el total de sombras disponibles.
  6.             el programa finaliza con un ancho o largo en 0.
  7.             ejemplo:
  8.             input                                                        output
  9.             7 7 8                                                        22
  10.             7 2 3 3 4 3 4 4 3 5 4 5 1 7 2 7                              8
  11.             5 3 1                                                        
  12.             3 2                                                                            
  13.             0 0 0                                                                    
  14. */
  15.  
  16. #include <stdio.h>
  17. #include <string.h>
  18.  
  19. typedef struct coordenadas{
  20.     int x;
  21.     int y;
  22. }coordenadas;
  23.  
  24. void leerarbol(coordenadas posicion[], int largo); //almacena las coordenadas de los arboles
  25. int sombras(coordenadas posicion[], int largo, int filas, int columnas); //ubica los arboles y las sombras. returna el total de sombras
  26. int main(void)
  27. {
  28.     int c,f,arboles; //columnas, filas, arboles
  29.     scanf("%i %i %i",&c,&f,&arboles);  
  30.     while(c && f) { //termina cuando columna o fila sean 0
  31.         coordenadas posicion[arboles]; //guarda las coordenadas de los arboles
  32.         leerarbol(posicion, arboles);
  33.         printf("%i\n",sombras(posicion, arboles, f, c));
  34.         scanf("%i %i %i",&c,&f,&arboles);
  35.     }
  36.     return 0;
  37. }
  38.  
  39. void leerarbol(coordenadas posicion[], int largo)
  40. {
  41.     int i;
  42.     for(i=0 ; i<largo ; i++) {
  43.         scanf("%i %i",&posicion[i].x,&posicion[i].y);
  44.     }
  45. }
  46.  
  47. int sombras(coordenadas posicion[], int largo, int filas, int columnas)
  48. {
  49.     int i,j,total=0;
  50.     int bosque[filas+1][columnas+1];
  51.     memset(bosque, 0, sizeof bosque);
  52.     for(i=0 ; i<largo; i++) {
  53.         int x=posicion[i].x -1;
  54.         int y=posicion[i].y -1;
  55.         bosque[y][x] = 1;
  56.     }
  57.     for(i=0 ; i<filas ; i++) {
  58.         for(j=0 ; j<columnas ; j++) {
  59.             /* se rellena con 2 en el lugar de las sombras*/
  60.             if(bosque[i][j]==1) {
  61.                 if(!bosque[i][j-1]) bosque[i][j-1]=2;
  62.                 if(!bosque[i][j+1]) bosque[i][j+1]=2;
  63.                 if(!bosque[i-1][j-1]) bosque[i-1][j-1]=2;
  64.                 if(!bosque[i-1][j]) bosque[i-1][j]=2;
  65.                 if(!bosque[i-1][j+1]) bosque[i-1][j+1]=2;
  66.                 if(!bosque[i+1][j-1]) bosque[i+1][j-1]=2;
  67.                 if(!bosque[i+1][j]) bosque[i+1][j]=2;
  68.                 if(!bosque[i+1][j+1]) bosque[i+1][j+1]=2;
  69.             }
  70.         }
  71.     }
  72.     for(i=0 ; i<filas ; i++) {
  73.         for(j=0 ; j<columnas ; j++) {
  74.             if (bosque[i][j]==2) total++;
  75.         }
  76.     }
  77.     return total;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement