l30n4rd0_

4644 - duelo no mar

Nov 12th, 2024 (edited)
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.52 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void exibir_campos(int **campoA, int **campoB, int m, int n) {
  5.     printf("Campo A:\n");
  6.     for (int i = 0; i < m; i++) {
  7.         for (int j = 0; j < n; j++) {
  8.             if (campoA[i][j] == -1) {
  9.                 printf("x");
  10.             } else {
  11.                 printf("%d", campoA[i][j]);
  12.             }
  13.             if (j < n - 1) {
  14.                 printf(" ");
  15.             }
  16.         }
  17.         printf("\n");
  18.     }
  19.  
  20.     printf("Campo B:\n");
  21.     for (int i = 0; i < m; i++) {
  22.         for (int j = 0; j < n; j++) {
  23.             if (campoB[i][j] == -1) {
  24.                 printf("x");
  25.             } else {
  26.                 printf("%d", campoB[i][j]);
  27.             }
  28.             if (j < n - 1) {
  29.                 printf(" ");
  30.             }
  31.         }
  32.         printf("\n");
  33.     }
  34. }
  35.  
  36. void ocorrer_turnos(int **campoA, int **campoB, int turnos) {
  37.     int pontos_jogadorA = 0, pontos_jogadorB = 0;
  38.     int c_i, c_j;
  39.  
  40.     for (int i = 0; i < turnos; i++) {
  41.         scanf("%d %d", &c_i, &c_j);
  42.         if (campoB[c_i][c_j] > 0) {
  43.             campoB[c_i][c_j] = -1;
  44.             pontos_jogadorA++;
  45.         }
  46.  
  47.         scanf("%d %d", &c_i, &c_j);
  48.         if (campoA[c_i][c_j] > 0) {
  49.             campoA[c_i][c_j] = -1;
  50.             pontos_jogadorB++;
  51.         }
  52.     }
  53.  
  54.     if (pontos_jogadorA > pontos_jogadorB) {
  55.         printf("Jogador A ganhou!\n");
  56.     } else if (pontos_jogadorA < pontos_jogadorB) {
  57.         printf("Jogador B ganhou!\n");
  58.     } else {
  59.         printf("Empate!\n");
  60.     }
  61. }
  62.  
  63. void determinar_posicao(int **campoA, int **campoB, int navios) {
  64.     int i, j;
  65.  
  66.     for (int k = 0; k < navios; k++) {
  67.         scanf("%d %d", &i, &j);
  68.         campoA[i][j]++;
  69.     }
  70.  
  71.     for (int k = 0; k < navios; k++) {
  72.         scanf("%d %d", &i, &j);
  73.         campoB[i][j]++;
  74.     }
  75. }
  76.  
  77. int main() {
  78.     int m, n;
  79.     scanf("%d %d", &m, &n);
  80.  
  81.     int **campoA = (int **)calloc(m, sizeof(int *));
  82.     int **campoB = (int **)calloc(m, sizeof(int *));
  83.     for (int i = 0; i < m; i++) {
  84.         campoA[i] = (int *)calloc(n, sizeof(int));
  85.         campoB[i] = (int *)calloc(n, sizeof(int));
  86.     }
  87.  
  88.     int navios;
  89.     scanf("%d", &navios);
  90.  
  91.     determinar_posicao(campoA, campoB, navios);
  92.  
  93.     int turnos;
  94.     scanf("%d", &turnos);
  95.  
  96.     ocorrer_turnos(campoA, campoB, turnos);
  97.  
  98.     exibir_campos(campoA, campoB, m, n);
  99.  
  100.     for (int i = 0; i < m; i++) {
  101.         free(campoA[i]);
  102.         free(campoB[i]);
  103.     }
  104.     free(campoA);
  105.     free(campoB);
  106.  
  107.     return 0;
  108. }
  109.  
Advertisement
Add Comment
Please, Sign In to add comment