Advertisement
Guest User

Dúvida de Programação Linguagem C-(mudança de sequencia)

a guest
Nov 16th, 2020
274
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.18 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.     int numJogadores = 0;
  6.     int rodadas = 1;
  7.  
  8.     typedef struct {
  9.         char nome[100];
  10.         int pontos;
  11.         int fazer;
  12.         int posicao;
  13.         int ativo;
  14.     } Jogador;
  15.  
  16.     // Array de estrutura para armazenar um conjunto de informações relacionada a cada jogador
  17.     Jogador jogador[50];
  18.  
  19.     while(1) {
  20.         printf("Digite a quantidade de Jogadores: ");
  21.        
  22.         scanf("%d",&numJogadores);
  23.    
  24.         if (numJogadores < 2) {
  25.             printf("Obs. Deve ter no minimo 2 jogadores e no máximo 50\n");
  26.         } else {
  27.             break;
  28.         }
  29.     }
  30.  
  31.     // Inicializa o vetor com valores padrão
  32.     for(int i=0; i < numJogadores; i++) {
  33.         strcpy(jogador[i].nome, "NULL");
  34.         jogador[i].pontos = 0;
  35.         jogador[i].fazer = 0;
  36.         jogador[i].posicao = i;
  37.         jogador[i].ativo = 1;
  38.     }
  39.  
  40.     // Captura o nome dos jogadores
  41.     for(int i = 0; i < numJogadores; i++) {
  42.         printf(" Digite o nome do jogador %d: ", (i + 1));
  43.         scanf("%s%*c", &jogador[i].nome);
  44.     }
  45.  
  46.     while(1) {
  47.         int jogadorPonto = 0; // Variável para identificar o jogador que fez ponto
  48.         int jogadoresPonto = 0; // Variável para identificar se pelo menos um jogador pontuou
  49.         int verificaPontos = 0; // Variável para sair do laço de pontuação
  50.         printf("\n** Rodada %d **\n\n", rodadas);
  51.  
  52.         // Percorre a lista de jogadores para capturar os índices
  53.         for (int i = 0; i < numJogadores; i++) {
  54.            
  55.             // Busca o jogador baseado na posicão de jogada
  56.             for (int i2 = 0; i2 < numJogadores; i2++) {
  57.                 // Ignora o jogador caso ele já esteja fora do jogo
  58.                 if (jogador[i2].ativo == 0) continue;
  59.  
  60.                 if (jogador[i2].posicao == i) {
  61.                     printf("Digite quantas '%s' irá fazer: ", jogador[i2].nome);
  62.                     scanf("%d", &jogador[i2].fazer);
  63.                 }
  64.             }
  65.         }
  66.  
  67.         // Lista os jogadores e seus pontos
  68.         for (int i = 0; i < numJogadores; i++) {
  69.             // Ignora o jogador caso ele já esteja fora do jogo
  70.             if (jogador[i].ativo == 0) continue;
  71.  
  72.             printf("\n%d - %s = %d ponto(s)", (jogador[i].posicao + 1), jogador[i].nome, jogador[i].pontos);
  73.         }
  74.        
  75.         printf("\n");
  76.  
  77.         // Atribue pontos ao jogador
  78.         while(verificaPontos == 0) {
  79.             printf("Informe o número do jogador que pontuou, ou 0 (zero) para continuar: ");
  80.             scanf("%d", &jogadorPonto);
  81.  
  82.             if (jogadorPonto == 0 && jogadoresPonto == 0) {
  83.                 printf("Pelo menos um dos jogadores deve pontuar");
  84.                 continue;
  85.             } else if (jogadorPonto == 0) {
  86.                 verificaPontos++;
  87.                 continue;
  88.             }
  89.  
  90.             // Atribue o ponto ao jogador selecionado
  91.             for (int i = 0; i < numJogadores; i++) {
  92.                 if (jogador[i].posicao == (jogadorPonto - 1)) {
  93.                     jogador[i].pontos++;
  94.                 }
  95.             }
  96.            
  97.             jogadoresPonto++;
  98.         }
  99.  
  100.         // Verifica se alcançou sete pontos
  101.         for (int i = 0; i < numJogadores; i++) {
  102.             if (jogador[i].pontos == 7 && jogador[i].ativo == 1) {
  103.                 jogador[i].ativo = 0;
  104.  
  105.                 printf("\n***** O jogador '%s' perdeu e está fora *****\n", jogador[i].nome);
  106.             }
  107.         }
  108.        
  109.         // Ordena a lista para uma nova rodada
  110.         for (int i = 0; i < numJogadores; i++) {
  111.             if (jogador[i].posicao == 0) {
  112.                 jogador[i].posicao = numJogadores - 1;
  113.             } else {
  114.                 jogador[i].posicao--;
  115.             }
  116.         }
  117.  
  118.         rodadas++;
  119.     }
  120.  
  121.     return 0;
  122. }
  123.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement