Advertisement
Joao_Joao

Questão 195 Lista de Exercícios IFPB

May 25th, 2022
1,331
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define ok(i, j) (i >= 0 && j >= 0 && i < 10 && j < 10)
  6.  
  7. int solve (int tabuleiro[12][12], int linha, int coluna) {
  8.   // se a posicao verificada no momento for valida e ela for uma bomba,
  9.   // tal variavel sera verdadeira, tendo assim o valor 1
  10.   int pos_sup_esq = (ok(linha-1, coluna-1) && tabuleiro[linha-1][coluna-1]);
  11.   int pos_sup_dir = (ok(linha-1, coluna+1) && tabuleiro[linha-1][coluna+1]);
  12.   int pos_inf_esq = (ok(linha+1, coluna-1) && tabuleiro[linha+1][coluna-1]);
  13.   int pos_inf_dir = (ok(linha+1, coluna+1) && tabuleiro[linha+1][coluna+1]);
  14.  
  15.   int pos_sup = (ok(linha-1, coluna) && tabuleiro[linha-1][coluna]);
  16.   int pos_inf = (ok(linha+1, coluna) && tabuleiro[linha+1][coluna]);
  17.   int pos_esq = (ok(linha, coluna-1) && tabuleiro[linha][coluna-1]);
  18.   int pos_dir = (ok(linha, coluna+1) && tabuleiro[linha][coluna+1]);
  19.  
  20.   // soma tudo
  21.   return tabuleiro[linha][coluna] +
  22.   pos_sup_esq + pos_sup_dir + pos_inf_esq +
  23.   pos_inf_dir + pos_sup + pos_inf + pos_esq + pos_dir;
  24. }
  25.  
  26. void main() {
  27.   srand(time(0));
  28.   // array booleano (0 ou 1)
  29.   // 1 - Verdadeiro | 0 - Falso
  30.   int tabuleiro[12][12];    
  31.  
  32.   // inicializacao do tabuleiro
  33.   for(int i = 0; i < 10; ++i) {
  34.     for(int j = 0; j < 10; ++j) {
  35.       tabuleiro[i][j] = 0;
  36.     }
  37.   }
  38.  
  39.   int i, j, k = 20;
  40.   // escondendo 20 bombas em posicoes aleatorias
  41.   while(k--) {
  42.     /*
  43.       * enquanto a posicao aleatoria gerada estiver
  44.       * preenchida no tabuleiro, gere uma nova posicao aleatoria
  45.     */
  46.     do {
  47.       i = rand() % 10, j = rand() % 10; // gera numeros aleatorios de 0 a 9
  48.     } while(tabuleiro[i][j]);
  49.  
  50.     // marca a posicao aleatoria gerada como preenchida
  51.     tabuleiro[i][j] = 1;
  52.   }
  53.  
  54.   const int linha = 2, coluna = 3;
  55.   printf("Ha %d bombas ", solve(tabuleiro, linha, coluna));
  56.   printf("ao redor da posicao (%d, %d)\n", linha, coluna);
  57. }
  58.  
Advertisement
RAW Paste Data Copied
Advertisement