Guest User

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

a guest
Nov 16th, 2020
84
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.  
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×