Programa Gerador de Tabelas Esportivas

De Wiki Cursos IFPR Foz
Revisão de 11h59min de 5 de maio de 2017 por Evandro.cantu (discussão | contribs)
Ir para navegaçãoIr para pesquisar
//Programa Gerador de Tabelas Esportivas
//Desenvolvido por Evandro Cantú
//Instituto Federal do Paraná
//Foz do Iguaçu, outubro 2016

#include <stdio.h>
#include <stdlib.h> 
#include <string.h>
#include <time.h>

//rodizio: Função para determinar as partidas de um rodízio simples,
//         com todos jogando contra todos.
//         Recebe como parâmetro o número de jogadores e
//         o vetor com os jogadores
void rodizio (int n, char jogadores[32][20])
{
  char tabela[] = "tabela.txt";
  FILE *arq;  
  int c = 0;
  int i, j;
  arq = fopen(tabela, "a");
  fprintf(arq, "\nPARTIDAS DO RODÍZIO: \n");
  for (i=0;i<n;i++)
    for (j=i+1;j<n;j++)
      fprintf(arq, "%2d: %20s __ x __ %-20s\n", ++c, jogadores[i], jogadores[j]);
  fclose(arq);
}

//matamata: Função para determinar as partidas de uma eliminatória simples.
//          Recebe como parâmetro o número de jogadores e
//          o vetor com os jogadores
void matamata (int n, char jogadores[32][20]);

//embaralhar: Função para embaralhar um vetor.
//            Recebe como parâmetro o vetor com os jogadores
//            a serem embaralhados e o tamanho do vetor.
void embaralhar(char vetor[32][20], int tamVetor)
{
  int i;
  char temp[20];
  srand(time(NULL));
  for (i = 0; i < tamVetor; i++)
  {
    int r = rand() %tamVetor;
    strcpy(temp,   vetor[i]);
    strcpy(vetor[i], vetor[r]);
    strcpy(vetor[r], temp);
  }
}

//calExtra: Função auxiliar da função copa, permtindo verificar se
//          há jogadores extra em um grupo, quando a divisão entre
//          o número de jogadores e o número de grupos não é exata.
int calExtra (int *mod)
{
  if (*mod > 0)
  { 
    *mod = *mod - 1;
    return (1);
  }
  return (0);
}

//copa: Função organizar a competição em grupos.
//      Recebe como parâmetros o número de grupos (g), número de
//      jogadores (n), número de classificados por grupo (nc) e
//      o vetor com os jogadores. 
void copa (int g, int n, int nc, char jogadores[32][20])
{
  char tabela[] = "tabela.txt";
  FILE *arq;
  char grupos[8][32][20];
  int i, j;
  int div, mod;
  div = n / g; //Número mínimo de jogadores por GRUPO
  mod = n % g; //Jogador(es) extra para alocar em GRUPO(s)
  int ng;      //Número de jogadores além dos cabeças de GRUPO
  int extra[8];
  int offset = 0;
  arq = fopen(tabela, "a");
  fprintf(arq, "\nCOMPETIÇÃO NO FORMATO COPA: \n");
  fprintf(arq, "-> %d GRUPOS\n-> %d Classificados cada GRUPO\n", g, nc);
  fprintf(arq, "\nCabeças de GRUPO e pré alocados pelo RANKING:\n");
  for (i = 0; i < g; i++)
  {
    fprintf(arq, "             Grupo %d", i+1);
  }
  fprintf(arq, "\n");
  //Os cabeças de chave são incluídos na primeira posição de cada grupo.
  for (i = 0; i < g; i++) //Cabeça de GRUPO
  {
    strcpy(grupos[i][0], jogadores[i]);
    fprintf(arq, "%20s", grupos[i][0]);
  }
  fprintf(arq, "\n");
  //Os próximos do ranking são incluídos na segunda posição de cada grupo,
  //invertendo a ordem de inclusão nos grupos.
  for (i = 0; i < g; i++) //Segundo integrante do GRUPO
  { 
    strcpy(grupos[i][1], jogadores[2 * g - 1 - i]);
    fprintf(arq, "%20s", grupos[i][1]);
  }
  fprintf(arq, "\n");
  fclose(arq);
  ng = n - 2 * g; //Número total de jogadores além dos cabeças de GRUPO
                  //e dos próximos do RANKING 
  //Retira cabeças de GRUPO e próximos do RANKING do vetor dos jogadores, 
  //pois já foram incluídos nos respectivos grupos. 
  for (i = 0; i < ng; i++)             
    strcpy(jogadores[i], jogadores[i + 2 * g]); 
  embaralhar(jogadores, ng); //Embaralha restantes
  //Monta GRUPOS, verificado através da função callExtra se
  //há jogadores extra em um grupo, quando a divisão entre
  //o número de jogadores e o número de grupos não é exata.
  for (j = 0; j < g; j++)              
  {
    extra[j] = calExtra(&mod);
    for (i = 0; i < ng/g + extra[j]; i++)
      //Inclui jogadores nos grupos, além do cabeça de GRUPO
      strcpy(grupos[j][i+2], jogadores[i + offset]);
    //offset marca no vetor com os jogadores a posição do próximo
    //jogador a ser incluídos no próximo GRUPO.      
    offset = offset + ng/g + extra[j];
    arq = fopen(tabela, "a");
    fprintf(arq, "\n+----------------------------------------------------+\n");
    fprintf(arq, "\n+-----------------------------------------------+");
    fprintf(arq, "\n| GRUPO %d: Jogadores | Vitórias | Saldo de Sets |", j + 1);
    fprintf(arq, "\n+--------------------+----------+---------------+\n");
    //Imprime os membros de cada GRUPO
    for (i = 0; i < n/g + extra[j]; i++)
      fprintf(arq, "|%19s |          |               |\n", grupos[j][i]);
    fprintf(arq, "+-----------------------------------------------+\n");
    fclose(arq);
    //Chama a função rodízio para determinar as partidas do GRUPO
    rodizio (n/g + extra[j], grupos[j]);
  }
  //Sequência de vetores de stgrings que definem a ordem dos
  //confrontos para as Finais, considerando o número de grupos (g) e
  //o número de classificados (c) por grupo.
  char final2g2c[][20] = {"1o Grupo 1 ________", "1o Grupo 2 ________", "2o Grupo 1 ________", "2o Grupo 2 ________"};
  char final2g3c[][20] = {"1o Grupo 1 ________", "1o Grupo 2 ________", "2o Grupo 1 ________", "2o Grupo 2 ________", "3o Grupo 1 ________", "3o Grupo 2 ________"};
  char final3g2c[][20] = {"1o Grupo 1 ________", "1o Grupo 2 ________", "1o Grupo 3 ________", "2o Grupo 2 ________", "2o Grupo 3 ________", "2o Grupo 1 ________"};
  char final3g3c[][20] = {"1o Grupo 1 ________", "1o Grupo 2 ________", "1o Grupo 3 ________", "2o Grupo 2 ________", "2o Grupo 3 ________", "2o Grupo 1 ________", "3o Grupo 1 ________", "3o Grupo 2 ________", "3o Grupo 3 ________"};
  char final4g2c[][20] = {"1o Grupo 1 ________", "1o Grupo 2 ________", "1o Grupo 3 ________", "1o Grupo 4 ________", "2o Grupo 2 ________", "2o Grupo 1 ________", "2o Grupo 4 ________", "2o Grupo 3 ________"};
  char final4g3c[][20] = {"1o Grupo 1 ________", "1o Grupo 2 ________", "1o Grupo 3 ________", "1o Grupo 4 ________", "2o Grupo 2 ________", "2o Grupo 1 ________", "2o Grupo 4 ________", "2o Grupo 3 ________", "3o Grupo 2 ________", "3o Grupo 1 ________", "3o Grupo 4 ________", "3o Grupo 3 ________"};
  char final6g2c[][20] = {"1o Grupo 1 ________", "1o Grupo 2 ________", "1o Grupo 3 ________", "1o Grupo 4 ________", "1o Grupo 5 ________", "1o Grupo 6 ________", "2o Grupo 4 ________", "2o Grupo 3 ________", "2o Grupo 6 ________", "2o Grupo 5 ________", "2o Grupo 1 ________", "2o Grupo 2 ________"};
  char final8g2c[][20] = {"1o Grupo 1 ________", "1o Grupo 2 ________", "1o Grupo 3 ________", "1o Grupo 4 ________", "1o Grupo 5 ________", "1o Grupo 6 ________", "1o Grupo 7 ________", "1o Grupo 8 ________", "2o Grupo 2 ________", "2o Grupo 1 ________", "2o Grupo 4 ________", "2o Grupo 3 ________", "2o Grupo 6 ________", "2o Grupo 5 ________", "2o Grupo 8 ________", "2o Grupo 7 ________"};
  switch (g)
  {
    case 2:
      if (nc == 2)
        matamata(g * nc, final2g2c);  
      if (nc == 3)
        matamata(g * nc, final2g3c);  
      break;
    case 3:
      if (nc == 2)
        matamata(g * nc, final3g2c);  
      if (nc == 3)
        matamata(g * nc, final3g3c);  
      break;
    case 4:
      if (nc == 2)
        matamata(g * nc, final4g2c);  
      if (nc == 3)
        matamata(g * nc, final4g3c);  
      break;
    case 6:
      matamata(g * nc, final6g2c);  
      break;
    case 8:
      matamata(g * nc, final8g2c);  
      break;
  }
}

void main(int argc, char *argv[]) 
//Arquivo com jogadores pode ser fornecido como parâmetro
{
  char jogador[20];
  char jogadores[32][20];
  int n = 0;   //número de jogadores cadastrados
  int g = 0;   //número de grupos
  int nc = 2;  //Número de classificados por GRUPO
  int i;
  char resposta;
  int tam;
  char arquivo[20];
  char tabela[] = "tabela.txt";
  if (argc == 1)
  {
    printf("\nCADASTRO DE JOGADORES\n");
    printf("\nEntre com NOME DO ARQUIVO com os jogadores:\n");
    fgets(arquivo, sizeof(arquivo), stdin);
    tam = strlen(arquivo);
    if (arquivo[tam - 1] == '\n')
      arquivo[tam - 1] = '\0';
  }
  else
  {
    strcpy (arquivo, argv[1]);
  }
  FILE *arq;
  arq = fopen(arquivo, "r");
  if(arq == NULL)
    printf("\nErro, nao foi possivel abrir o arquivo\n");
  else
    //Monta vetor com os jogadores
    while( (fscanf(arq,"%s\n", jogador))!=EOF )
    {
      strcpy(jogadores[n], jogador);
      n++;
    }
  fclose(arq);

  arq = fopen(tabela, "w");
  if(arq == NULL)
    printf("\nErro, nao foi possivel abrir o arquivo\n");

  fprintf(arq, "\n+----------------------------------------------------+\n");
  fprintf(arq, "\nDATA DA COMPETIÇÃO: %s \n", __DATE__);
  //Imprime jogadores cadastrados
  fprintf(arq, "\nJOGADORES CADASTRADOS:\n");
  for (i=0; i<n; i++)
  {
    printf("%2d: %-20s\n", i + 1, jogadores[i]);
    fprintf(arq, "%2d: %-20s\n", i + 1, jogadores[i]);
  }
  fclose(arq);
/*
  //Pergunta sobre formato do sorteio
  printf("\nESCOLHA FORMATO DO SORTEIO: \n");
  printf(" (R) Manter ordem de RANKING ou CABEÇAS DE CHAVE (embaralhando demais)\n");
  printf(" (S) SORTEAR e embaralhar TODOS os jogadores\n");
  scanf (" %c",&resposta);
  if (resposta == 's' || resposta == 'S')
    embaralhar(jogadores, n);
*/
  //Pergunta sobre formato da competição
  printf("\nESCOHA FORMATO DA COMPETIÇÃO: \n");
  if (n >= 6 && n <= 32)
    printf(" (C) Copa: Grupos + Fase Final (De 6 a 32 jogadores)\n");
  printf(" (R) Rodízio simples (Até 5 jogadores)\n");
  printf(" (E) Eliminatória simples (Até 16 jogadores)\n");
  scanf (" %c",&resposta);
  if (resposta == 'r' || resposta == 'R')
    //Chama função rodizio
    rodizio (n, jogadores);
  if (resposta ==  'e' || resposta == 'E')
    //Chama função matamata
    matamata(n, jogadores);
  if (resposta ==  'c' || resposta == 'C')
  {
    //Pergunta sobre número de GRUPOS
    printf("\n  Escolha quantos GRUPOS: \n");
    printf("   (2) Dois   GRUPOS (Até 10 jogadores)\n");
    printf("   (3) Três   GRUPOS (De 9 a 12 jogadores)\n");
    printf("   (4) Quatro GRUPOS (De 12 a 17 jogadores)\n");
    printf("   (6) Seis   GRUPOS (De 18 a 24 jogadores)\n");
    printf("   (8) Oito   GRUPOS (De 24 a 32 jogadores)\n");
    scanf (" %c",&resposta);
    if (resposta == '2' || resposta == '3'|| resposta == '4')
    {
      if (resposta == '2')
        g = 2;
      if (resposta == '3')
        g = 3;
      if (resposta == '4')
        g = 4;
      //Pergunta sobre número de classificados por GRUPO
      printf("\n  Escolha número de classificados por GRUPO: \n");
      printf("   (2) Dois\n");
      printf("   (3) Três\n");
      scanf (" %c",&resposta);
      if (resposta == '2')
        nc = 2;
      if (resposta == '3')
        nc = 3;
    }
    if (resposta == '4')
      g = 4;
    if (resposta == '6')
      g = 6;
    if (resposta == '8')
      g = 8;
   //Chama função copa
   copa(g, n, nc, jogadores);
  }
}

//matamata: Função para determinar as partidas de uma eliminatória simples.
//          Recebe como parâmetro o número de jogadores e
//          o vetor com os jogadores
void matamata (int n, char jogadores[32][20])
{
  char tabela[] = "tabela.txt";
  FILE *arq;
  arq = fopen(tabela, "a");
  fprintf(arq, "\n+----------------------------------------------------+\n");
  fprintf(arq, "\nPARTIDAS ELIMINATÓRIAS: \n");
  switch (n)
  {
    case 2:
      fprintf(arq, "\n%20s ----+", jogadores[0]);        //1---+
      fprintf(arq, "\n                         |----+"); //    |----+
      fprintf(arq, "\n%20s ----+\n", jogadores[1]);      //2---+
      break;
    case 3:
      fprintf(arq, "\n%20s ---------+", jogadores[0]);       //1-------+
      fprintf(arq, "\n                              |----"); //        |---
      fprintf(arq, "\n%20s ----+    |", jogadores[1]);       //2---+   |
      fprintf(arq, "\n                         |----+");     //    |----+
      fprintf(arq, "\n%20s ----+\n", jogadores[2]);          //3---+
      break;
    case 4:
      fprintf(arq, "\n%20s ----+", jogadores[0]);              //1---+
      fprintf(arq, "\n                         |----+");       //    |---+
      fprintf(arq, "\n%20s ----+    |", jogadores[3]);         //4---+   |
      fprintf(arq, "\n                              |----");   //        |---
      fprintf(arq, "\n%20s ----+    |", jogadores[1]);         //2---+   |
      fprintf(arq, "\n                         |----+");       //    |---+
      fprintf(arq, "\n%20s ----+\n", jogadores[2]);            //3---+
      break;
    case 5:
      fprintf(arq, "\n%20s ---------+", jogadores[0]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[3]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |----\n", jogadores[4]);
      fprintf(arq, "                                   | ");  
      fprintf(arq, "\n%20s ----+         |", jogadores[1]);
      fprintf(arq, "\n                         |---------+");
      fprintf(arq, "\n%20s ----+\n", jogadores[2]);
      break;
    case 6:
      fprintf(arq, "\n%20s ---------+", jogadores[0]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[3]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |----\n", jogadores[4]);
      fprintf(arq, "                                   | ");
      fprintf(arq, "\n%20s ---------+    |", jogadores[1]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[2]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+       \n", jogadores[5]);
      break;
    case 7:
      fprintf(arq, "\n%20s ---------+", jogadores[0]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[3]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |\n", jogadores[4]);
      fprintf(arq, "                                   |---");
      fprintf(arq, "\n%20s ----+         |", jogadores[1]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[6]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[2]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+\n", jogadores[5]);
      break;
    case 8:
      fprintf(arq, "\n%20s ----+", jogadores[0]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[7]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[3]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |\n", jogadores[4]);
      fprintf(arq, "                                   |----");
      fprintf(arq, "\n%20s ----+         |", jogadores[1]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[6]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[2]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+\n", jogadores[5]);
      break;
    case 9:
      //matamata 5
      fprintf(arq, "\n%20s ---------+", jogadores[0]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[7]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |----\n", jogadores[8]);
      fprintf(arq, "                                   | ");  
      fprintf(arq, "\n%20s ----+         |", jogadores[3]);
      fprintf(arq, "\n                         |---------+");
      fprintf(arq, "\n%20s ----+\n", jogadores[4]);
      //matamata 4
      fprintf(arq, "\n%20s ----+", jogadores[1]); 
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[6]);
      fprintf(arq, "\n                              |----");
      fprintf(arq, "\n%20s ----+    |", jogadores[2]); 
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+\n", jogadores[5]);
      break;
    case 10:
      //matamata 5
      fprintf(arq, "\n%20s ---------+", jogadores[0]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[7]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |----", jogadores[8]);
      fprintf(arq, "\n                                   | ");  
      fprintf(arq, "\n%20s ----+         |", jogadores[3]);
      fprintf(arq, "\n                         |---------+");
      fprintf(arq, "\n%20s ----+\n", jogadores[4]);
      //matamata 5
      fprintf(arq, "\n%20s ---------+", jogadores[1]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[6]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |----", jogadores[9]);
      fprintf(arq, "\n                                   | ");  
      fprintf(arq, "\n%20s ----+         |", jogadores[2]);
      fprintf(arq, "\n                         |---------+");
      fprintf(arq, "\n%20s ----+\n", jogadores[5]);
      break;
    case 11:
      //matamata 5
      fprintf(arq, "\n%20s ---------+", jogadores[0]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[7]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |----", jogadores[8]);
      fprintf(arq, "\n                                   | ");  
      fprintf(arq, "\n%20s ----+         |", jogadores[3]);
      fprintf(arq, "\n                         |---------+");
      fprintf(arq, "\n%20s ----+\n", jogadores[4]);
      //matamata 6
      fprintf(arq, "\n%20s ---------+", jogadores[1]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[6]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |----", jogadores[9]);
      fprintf(arq, "\n                                   | ");  
      fprintf(arq, "\n%20s ---------+    |", jogadores[2]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[5]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+       \n", jogadores[10]);
      break;
    case 12:
      //matamata 6
      fprintf(arq, "\n%20s ---------+", jogadores[0]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[7]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |----", jogadores[8]);
      fprintf(arq, "\n                                   |");
      fprintf(arq, "\n%20s ---------+    |", jogadores[3]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[4]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+\n", jogadores[11]);
      //matamata 6
      fprintf(arq, "\n%20s ---------+", jogadores[1]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[6]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |----", jogadores[9]);
      fprintf(arq, "\n                                   | ");  
      fprintf(arq, "\n%20s ---------+    |", jogadores[2]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[5]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+       \n", jogadores[10]);
      break;
    case 13:
      //matamata 7
      fprintf(arq, "\n%20s ---------+", jogadores[0]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[7]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |", jogadores[8]);
      fprintf(arq, "\n                                   |---");
      fprintf(arq, "\n%20s ----+         |", jogadores[3]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[12]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[4]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+\n", jogadores[11]);
      //matamata 6
      fprintf(arq, "\n%20s ---------+", jogadores[1]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[6]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |----", jogadores[9]);
      fprintf(arq, "\n                                   | ");  
      fprintf(arq, "\n%20s ---------+    |", jogadores[2]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[5]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+      \n ", jogadores[10]);
      break;
    case 14:
      //matamata 7
      fprintf(arq, "\n%20s ---------+", jogadores[0]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[7]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |", jogadores[8]);
      fprintf(arq, "\n                                   |---");
      fprintf(arq, "\n%20s ----+         |", jogadores[3]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[12]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[4]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+\n", jogadores[11]);
      //matamata 7
      fprintf(arq, "\n%20s ---------+", jogadores[1]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[6]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |", jogadores[9]);
      fprintf(arq, "\n                                   |---");
      fprintf(arq, "\n%20s ----+         |", jogadores[2]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[13]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[5]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+\n", jogadores[10]);
      break;
    case 15:
      //matamata 7
      fprintf(arq, "\n%20s ---------+", jogadores[0]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[7]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |", jogadores[8]);
      fprintf(arq, "\n                                   |---");
      fprintf(arq, "\n%20s ----+         |", jogadores[3]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[12]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[4]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+\n", jogadores[11]);
      //matamata 8
      fprintf(arq, "\n%20s ----+", jogadores[1]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[14]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[6]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |", jogadores[9]);
      fprintf(arq, "\n                                   |----");
      fprintf(arq, "\n%20s ----+         |", jogadores[2]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[13]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[5]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+\n", jogadores[10]);
      break;
    case 16:
      //matamata 8
      fprintf(arq, "\n%20s ----+", jogadores[0]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[15]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[7]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |", jogadores[8]);
      fprintf(arq, "\n                                   |----");
      fprintf(arq, "\n%20s ----+         |", jogadores[3]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[12]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[4]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+\n", jogadores[11]);
      //matamata 8
      fprintf(arq, "\n%20s ----+", jogadores[1]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[14]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[6]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+         |", jogadores[9]);
      fprintf(arq, "\n                                   |----");
      fprintf(arq, "\n%20s ----+         |", jogadores[2]);
      fprintf(arq, "\n                         |----+    |");
      fprintf(arq, "\n%20s ----+    |    |", jogadores[13]);
      fprintf(arq, "\n                              |----+");
      fprintf(arq, "\n%20s ----+    |", jogadores[5]);
      fprintf(arq, "\n                         |----+");
      fprintf(arq, "\n%20s ----+\n", jogadores[10]);
      break;
  }
  fprintf(arq, "\n+----------------------------------------------------+\n");
  fclose(arq);
}