Programa Gerador de Tabelas Esportivas: mudanças entre as edições
De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
(Uma revisão intermediária pelo mesmo usuário não está sendo mostrada) | |||
Linha 38: | Linha 38: | ||
//Instituto Federal do Paraná | //Instituto Federal do Paraná | ||
//Foz do Iguaçu, outubro 2016 | //Foz do Iguaçu, outubro 2016 | ||
//Contato: evandro.cantu@ifpr.edu.br | |||
//Atualização: jun/2017 | //Atualização: jun/2017 | ||
Linha 283: | Linha 284: | ||
resposta != '8' && resposta != 'z' && resposta != 'Z' && | resposta != '8' && resposta != 'z' && resposta != 'Z' && | ||
resposta != 's' && resposta != 'S'); | resposta != 's' && resposta != 'S'); | ||
if (resposta == '2' || resposta == '3'|| resposta == '4') | if (resposta == '2' || resposta == '3'|| resposta == '4'|| | ||
resposta == '5' || resposta == '6') | |||
{ | { | ||
if (resposta == '2') | if (resposta == '2') | ||
Linha 291: | Linha 293: | ||
if (resposta == '4') | if (resposta == '4') | ||
g = 4; | g = 4; | ||
if ((g == 2 && n >= 6) || (g == 3 && n >= 9) || (g == 4 && n >= 12)) | if (resposta == '5') | ||
g = 5; | |||
if (resposta == '6') | |||
g = 6; | |||
if ((g == 2 && n >= 6) || (g == 3 && n >= 9) || (g == 4 && n >= 12) || | |||
(g == 5 && n >= 15) || (g == 6 && n >= 18)) | |||
//Pergunta sobre número de classificados por GRUPO | //Pergunta sobre número de classificados por GRUPO | ||
do | do | ||
Linha 305: | Linha 312: | ||
nc = 3; | nc = 3; | ||
} | } | ||
if (resposta == '7') | if (resposta == '7') | ||
g = 7; | g = 7; | ||
Linha 386: | Linha 387: | ||
//copa: Função organizar a competição em grupos. | //copa: Função organizar a competição em grupos. | ||
// Recebe como parâmetros o número de grupos (g), número de | // Recebe como parâmetros o número de jogadores a serem incluídos | ||
// pelo Ranking (r), o número de grupos (g), número de | |||
// jogadores (n), número de classificados por grupo (nc) e | // jogadores (n), número de classificados por grupo (nc) e | ||
// o vetor com os jogadores. | // o vetor com os jogadores. | ||
Linha 490: | Linha 492: | ||
"2o Grupo B ________", "2o Grupo A ________", "2o Grupo D ________", "2o Grupo C ________", | "2o Grupo B ________", "2o Grupo A ________", "2o Grupo D ________", "2o Grupo C ________", | ||
"3o Grupo B ________", "3o Grupo A ________", "3o Grupo D ________", "3o Grupo C ________"}; | "3o Grupo B ________", "3o Grupo A ________", "3o Grupo D ________", "3o Grupo C ________"}; | ||
char | char final5g2c[][20] = { | ||
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________", | "1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________", | ||
"1o Grupo D ________", "1o Grupo E ________", | "1o Grupo D ________", "1o Grupo E ________", | ||
"2o Grupo | "2o Grupo A ________", "2o Grupo E ________", "2o Grupo B ________", | ||
"2o Grupo C ________", "2o Grupo D ________"}; | "2o Grupo C ________", "2o Grupo D ________"}; | ||
char | char final5g3c[][20] = { | ||
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________", | |||
"1o Grupo D ________", "1o Grupo E ________", | |||
"2o Grupo A ________", "2o Grupo E ________", "2o Grupo B ________", | |||
"2o Grupo C ________", "2o Grupo D ________", | |||
"3o Grupo D ________", "3o Grupo A ________", "3o Grupo E ________", | |||
"3o Grupo B ________", "3o Grupo C ________",}; | |||
char final6g2c[][20] = { | |||
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________", | "1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________", | ||
"1o Grupo D ________", "1o Grupo E ________", "1o Grupo F ________", | "1o Grupo D ________", "1o Grupo E ________", "1o Grupo F ________", | ||
"2o Grupo E ________", "2o Grupo F ________", "2o Grupo B ________", | "2o Grupo E ________", "2o Grupo F ________", "2o Grupo B ________", | ||
"2o Grupo A ________", "2o Grupo D ________", "2o Grupo C ________"}; | "2o Grupo A ________", "2o Grupo D ________", "2o Grupo C ________"}; | ||
char final6g3c[][20] = { | |||
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________", | |||
"1o Grupo D ________", "1o Grupo E ________", "1o Grupo F ________", | |||
"2o Grupo E ________", "2o Grupo F ________", "2o Grupo B ________", | |||
"2o Grupo A ________", "2o Grupo D ________", "2o Grupo C ________", | |||
"3o Grupo A ________", "3o Grupo B ________", "3o Grupo C ________", | |||
"3o Grupo D ________", "3o Grupo E ________", "3o Grupo F ________"}; | |||
char final7g[][20] = { | char final7g[][20] = { | ||
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________", | "1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________", | ||
Linha 548: | Linha 564: | ||
break; | break; | ||
case 5: | case 5: | ||
matamata(g * nc, | if (nc == 2) | ||
matamata(g * nc, final5g2c); | |||
if (nc == 3) | |||
matamata(g * nc, final5g3c); | |||
break; | break; | ||
case 6: | case 6: | ||
matamata(g * nc, | if (nc == 2) | ||
matamata(g * nc, final6g2c); | |||
if (nc == 3) | |||
matamata(g * nc, final6g3c); | |||
break; | break; | ||
case 7: | case 7: | ||
Linha 907: | Linha 929: | ||
fprintf(arq, "\n%20s |----+",""); | fprintf(arq, "\n%20s |----+",""); | ||
fprintf(arq, "\n%20s ----+\n", jogadores[1]); | fprintf(arq, "\n%20s ----+\n", jogadores[1]); | ||
break; | |||
case 18: | |||
//matamata 9 | |||
fprintf(arq, "\n%22s16F OF QF SF F\n",""); | |||
fprintf(arq, "\n%25s ----+", jogadores[0]); | |||
fprintf(arq, "\n%20s |----+",""); | |||
fprintf(arq, "\n%20s ----+ | |", jogadores[16]); | |||
fprintf(arq, "\n%20s |----+ |",""); | |||
fprintf(arq, "\n%20s ----+ |----+", jogadores[15]); | |||
fprintf(arq, "\n%20s | |",""); | |||
fprintf(arq, "\n%25s ----+ | |", jogadores[8]); | |||
fprintf(arq, "\n%25s |----+ |",""); | |||
fprintf(arq, "\n%25s ----+ |----+", jogadores[7]); | |||
fprintf(arq, "\n%25s | |",""); | |||
fprintf(arq, "\n%25s ----+ | |", jogadores[4]); | |||
fprintf(arq, "\n%25s |----+ | |",""); | |||
fprintf(arq, "\n%25s ----+ | | |", jogadores[11]); | |||
fprintf(arq, "\n%25s |----+ |",""); | |||
fprintf(arq, "\n%25s ----+ | |", jogadores[12]); | |||
fprintf(arq, "\n%25s |----+ |",""); | |||
fprintf(arq, "\n%25s ----+ |", jogadores[3]); | |||
fprintf(arq, "\n%25s |-----",""); | |||
//matamata 9 | |||
fprintf(arq, "\n%25s ----+ |", jogadores[2]); | |||
fprintf(arq, "\n%25s |----+ |",""); | |||
fprintf(arq, "\n%25s ----+ | |", jogadores[13]); | |||
fprintf(arq, "\n%25s |----+ |",""); | |||
fprintf(arq, "\n%25s ----+ | | |", jogadores[10]); | |||
fprintf(arq, "\n%25s |----+ | |",""); | |||
fprintf(arq, "\n%25s ----+ | | ", jogadores[5]); | |||
fprintf(arq, "\n%25s |----+",""); | |||
fprintf(arq, "\n%25s ----+ |", jogadores[6]); | |||
fprintf(arq, "\n%25s |----+ |",""); | |||
fprintf(arq, "\n%25s ----+ | |", jogadores[9]); | |||
fprintf(arq, "\n%20s | |",""); | |||
fprintf(arq, "\n%20s ----+ |----+", jogadores[14]); | |||
fprintf(arq, "\n%20s |----+ |",""); | |||
fprintf(arq, "\n%20s ----+ | |", jogadores[17]); | |||
fprintf(arq, "\n%20s |----+",""); | |||
fprintf(arq, "\n%25s ----+\n", jogadores[1]); | |||
break; | break; | ||
case 24: | case 24: |
Edição atual tal como às 16h49min de 12 de novembro de 2018
Este software permite a geração de tabelas esportivas para organizar competições em diferentes formatos, incluindo:
- Copa (fase de grupos seguido de eliminatória simples);
- Rodízio simples (todos contra todos);
- Eliminatória simples (mata mata).
No formato copa o programa aceita até 80 competidores, organizados em até 16 grupos. No formato eliminatória simples o programa pode organizar confrontos com 2 a 16 jogadores ou 24 ou 32. No formato rodízio simples o programa aceita qualquer número de jogadores.
Utilização do Programa
- Entrada dos jogadores
- O cadastro de jogadores (ou equipes) deve ser realizado através de um arquivo de texto, um nome em cada linha. Os nomes podem ter até 20 caracteres, sem acentos ou espaços.
- Caso haja um ranking dos jogadores para orientar a formação das tabelas para eliminatórias simples ou para composição de grupos no formato copa, a ordem dos jogadores no arquivo deve seguir a ordem do ranking.
- Execução do programa
- A execução do programa deve ser feira em um terminal de comandos, no caso do sistema Linux, passando como parâmetro o arquivo com os jogadores cadastrados.
./GeradorTabelas Jogadores.txt
- No caso so sistema Windows, deve-se clicar duas vezes no programa executável e será solicitado o nome do arquivo com os jogadores.
- O programa solicita ao usuário as opções quanto ao formato das competições e orienta as escolhas em função do número de competidores.
- Tabelas da Competição
- O programa gera como saída o arquivo Tabelas.txt, que contém os confrontos entre os jogadores.
- Caso a escolha tenha sido o formato copa, o programa gera os confrontos da fase de grupos e os confrontos das partidas eliminatórias.
- O arquivo Tabelas.txt pode ser editado com os resultados das competições.
Download do programa
O software foi desenvolvido em linguagem C.
O código fonte do programa está organizado em três arquivos, disponibilizados abaixo:
GeradorTebelas.c Copa.c MataMata.c
Para gerar o programa executável, os arquivos fonte devem ser compilados com o comando:
gcc GeradorTabelas.c Copa.c MataMata.c -o GeradorTabelas
//Arquivo GeradorTabelas.c
//Programa Gerador de Tabelas Esportivas
//Desenvolvido por Evandro Cantú
//Instituto Federal do Paraná
//Foz do Iguaçu, outubro 2016
//Contato: evandro.cantu@ifpr.edu.br
//Atualização: jun/2017
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
char tabela[] = "Tabelas.txt";
FILE *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]);
//Protótipo: Arquivo fonte MataMata.c
//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 r, int g, int n, int nc, char jogadores[80][20]);
//Protótipo: Arquivo fonte Copa.c
//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[80][20])
{
int c = 0;
int i, j, k;
char ultimoJogador[20] = {""};
//SE número impar de jogadores ENTÃO adiciona um jogador vazio
if (n % 2 == 1) {
strcpy(jogadores[n], ultimoJogador);
n = n + 1;
}
arq = fopen(tabela, "a");
fprintf(arq, "\nPARTIDAS \nDO RODÍZIO: \n\n");
for (k=0;k<n-1;k++)
{
fprintf(arq, "%sRodada: %2d\n", "",k+1);
for (i=0;i<n/2;i++)
if ((strcmp(jogadores[i], "") != 0) && (strcmp(jogadores[n-1-i], "") != 0))
fprintf(arq, "%2d: %20s _ x _ %-20s\n", ++c, jogadores[i], jogadores[n-1-i]);
//Rotaciona vetor de jogadores, menos primeira posição
strcpy(ultimoJogador, jogadores[n-1]);
for (j=n-1;j>0;j--)
strcpy(jogadores[j], jogadores[j-1]);
strcpy(jogadores[1], ultimoJogador);
}
fclose(arq);
}
//Ref: https://pt.wikipedia.org/wiki/Competições_de_todos_contra_todos
/* FUNÇÃO ANTERIOR SEM ORGANIZAR RODADAS
void rodizio (int n, char jogadores[80][20])
{
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);
}
*/
//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[80][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);
}
}
int main(int argc, char *argv[])
//Arquivo com jogadores pode ser fornecido como parâmetro
{
char jogador[20];
char jogadores[80][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 r; //Número de jogadores incluídos pelo RANKING nos GRUPOS
int i;
char resposta;
int tam;
char arquivo[20];
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("\nNao foi possivel abrir o arquivo!\n");
printf("\nConfira se o nome do arquivo está correto, incluindo a extensão txt.\n");
return(1);}
else
//Monta vetor com os jogadores
while( (fscanf(arq,"%s\n", jogador))!=EOF )
{
strcpy(jogadores[n], jogador);
n++;
}
fclose(arq);
arq = fopen(tabela, "w");
fprintf(arq, "\n+----------------------------------------------------+\n");
fprintf(arq, "\n PROGRAMA GERADOR DE TABELAS ESPORTIVAS\n");
fprintf(arq, "\n+----------------------------------------------------+\n");
fprintf(arq, "\n Evento: _________________________________________\n");
fprintf(arq, "\n Local: _________________________________________\n");
fprintf(arq, "\n Data: _________________________________________\n");
fprintf(arq, "\n+----------------------------------------------------+\n");
//Data e hora do sistema
time_t mytime;
mytime = time(NULL);
struct tm tm = *localtime(&mytime);
fprintf(arq, "\n Geração das Tabelas: %d/%d/%d - %d:%d\n",
tm.tm_mday, tm.tm_mon + 1, tm.tm_year + 1900, tm.tm_hour, tm.tm_min);
fprintf(arq, "\n+----------------------------------------------------+\n");
//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 da competição
do
{
printf("\nESCOHA FORMATO DA COMPETIÇÃO: \n");
if (n >= 4 && n <= 80)
printf(" (C) Copa: Grupos + Fase Final\n");
printf(" (R) Rodízio simples\n");
if (n <= 16 || n == 24 || n == 32)
printf(" (E) Eliminatória simples\n");
scanf (" %c",&resposta);
} while (resposta != 'c' && resposta != 'C' &&
resposta != 'r' && resposta != 'R' &&
resposta != 'e' && resposta != 'e');
if (resposta == 'r' || resposta == 'R')
//Chama função rodizio
rodizio (n, jogadores);
if (resposta == 'e' || resposta == 'E') {
//Pergunta sobre formato do sorteio
do
{
printf("\nESCOLHA FORMATO DO SORTEIO: \n");
printf(" (R) Manter ordem de RANKING\n");
printf(" (S) SORTEAR e embaralhar TODOS os jogadores\n");
scanf (" %c",&resposta);
} while (resposta != 's' && resposta != 'S' &&
resposta != 'r' && resposta != 'R');
if (resposta == 's' || resposta == 'S')
embaralhar(jogadores, n);
//Chama função matamata
matamata(n, jogadores);
}
if (resposta == 'c' || resposta == 'C')
{
//Pergunta sobre número de GRUPOS
do
{
printf("\n Escolha quantos GRUPOS: \n");
if (n >= 4 && n <= 10) {
printf(" (2) Dois GRUPOS (%d ", n / 2);
if (n % 2 != 0) printf("ou %d ", n / 2 + 1);
printf("jogadores cada)");
if (n / 2 == 3 || (n / 2 == 4 && n % 2 == 0))
printf(" <- melhor escolha\n"); else printf("\n");}
if (n >= 6 && n <= 15) {
printf(" (3) Três GRUPOS (%d ", n / 3);
if (n % 3 != 0) printf("ou %d ", n / 3 + 1);
printf("jogadores cada)");
if (n / 3 == 3 || (n / 3 == 4 && n % 3 == 0))
printf(" <- melhor escolha\n"); else printf("\n");}
if (n >= 8 && n <= 20) {
printf(" (4) Quatro GRUPOS (%d ", n / 4);
if (n % 4 != 0) printf("ou %d ", n / 4 + 1);
printf("jogadores cada)");
if (n / 4 == 3 || (n / 4 == 4 && n % 4 == 0))
printf(" <- melhor escolha\n"); else printf("\n");}
if (n >= 10 && n <= 25) {
printf(" (5) Cinco GRUPOS (%d ", n / 5);
if (n % 5 != 0) printf("ou %d ", n / 5 + 1);
printf("jogadores cada)");
if (n / 5 == 3 || (n / 5 == 4 && n % 5 == 0))
printf(" <- melhor escolha\n"); else printf("\n");}
if (n >= 12 && n <= 30) {
printf(" (6) Seis GRUPOS (%d ", n / 6);
if (n % 6 != 0) printf("ou %d ", n / 6 + 1);
printf("jogadores cada)");
if (n / 6 == 3 || (n / 6 == 4 && n % 6 == 0))
printf(" <- melhor escolha\n"); else printf("\n");}
if (n >= 14 && n <= 35) {
printf(" (7) Sete GRUPOS (%d ", n / 7);
if (n % 7 != 0) printf("ou %d ", n / 7 + 1);
printf("jogadores cada)");
if (n / 7 == 3 || (n / 7 == 4 && n % 7 == 0))
printf(" <- melhor escolha\n"); else printf("\n");}
if (n >= 16 && n <= 40) {
printf(" (8) Oito GRUPOS (%d ", n / 8);
if (n % 8 != 0) printf("ou %d ", n / 8 + 1);
printf("jogadores cada)");
if (n / 8 == 3 || (n / 8 == 4 && n % 8 == 0))
printf(" <- melhor escolha\n"); else printf("\n");}
if (n >= 24 && n <= 60) {
printf(" (Z) Doze GRUPOS (%d ", n / 12);
if (n % 12 != 0) printf("ou %d ", n / 12 + 1);
printf("jogadores cada)");
if (n / 12 == 3 || (n / 12 == 4 && n % 12 == 0))
printf(" <- melhor escolha\n"); else printf("\n");}
if (n >= 32 && n <= 80) {
printf(" (S) Dezeseis GRUPOS (%d ", n / 16);
if (n % 16 != 0) printf("ou %d ", n / 16 + 1);
printf("jogadores cada)");
if (n / 16 == 3 || (n / 16 == 4 && n % 16 == 0))
printf(" <- melhor escolha\n"); else printf("\n");}
scanf (" %c",&resposta);
} while (resposta != '2' && resposta != '3' && resposta != '4' &&
resposta != '5' && resposta != '6' && resposta != '7' &&
resposta != '8' && resposta != 'z' && resposta != 'Z' &&
resposta != 's' && resposta != 'S');
if (resposta == '2' || resposta == '3'|| resposta == '4'||
resposta == '5' || resposta == '6')
{
if (resposta == '2')
g = 2;
if (resposta == '3')
g = 3;
if (resposta == '4')
g = 4;
if (resposta == '5')
g = 5;
if (resposta == '6')
g = 6;
if ((g == 2 && n >= 6) || (g == 3 && n >= 9) || (g == 4 && n >= 12) ||
(g == 5 && n >= 15) || (g == 6 && n >= 18))
//Pergunta sobre número de classificados por GRUPO
do
{
printf("\n Escolha número de classificados por GRUPO: \n");
printf(" (2) Dois\n");
printf(" (3) Três\n");
scanf (" %c",&resposta);
} while (resposta != '2' && resposta != '3');
if (resposta == '2')
nc = 2;
if (resposta == '3')
nc = 3;
}
if (resposta == '7')
g = 7;
if (resposta == '8')
g = 8;
if (resposta == 'z' || resposta == 'Z')
g = 12;
if (resposta == 's' || resposta == 'S')
g = 16;
//Pergunta sobre formato do sorteio
do
{
printf("\nESCOLHA O FORMATO DA MONTAGEM DOS GRUPOS: \n");
printf(" (R) Manter ordem de RANKING para organizar GRUPOS\n");
printf(" (1) Incluir UM pelo RANKING e embaralhar demais\n");
if (n / g >= 2)
printf(" (2) Incluir DOIS pelo RANKING e embaralhar demais\n");
if (n / g >= 3)
printf(" (3) Incluir TRÊS pelo RANKING e embaralhar demais\n");
printf(" (S) SORTEAR e embaralhar TODOS os jogadores\n");
scanf (" %c",&resposta);
} while (resposta != 's' && resposta != 'S' &&
resposta != '1' && resposta != '2' && resposta != '3' &&
resposta != 'r' && resposta != 'R');
if (resposta == 's' || resposta == 'S')
r = 0;
if (resposta == '1')
r = 1;
if (resposta == '2')
r = 2;
if (resposta == '3')
r = 3;
if (resposta == 'r' || resposta == 'R')
r = 4;
//Chama função copa
copa(r, g, n, nc, jogadores);
}
arq = fopen(tabela, "a");
fprintf(arq, "\n+----------------------------------------------------+\n");
fprintf(arq, "\n Programa desenvolvido por: Evandro Cantú");
fprintf(arq, "\n Contato: evandro.cantu@ifpr.edu.br");
fprintf(arq, "\n Data da compilação: %s\n",__DATE__);
fclose(arq);
return(0);
}
//Arquivo Copa.c
//Programa Gerador de Tabelas Esportivas
//Função copa utilizada pelo programa principal.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void matamata (int n, char jogadores[32][20]);
void rodizio (int n, char jogadores[80][20]);
void embaralhar(char vetor[80][20], int tamVetor);
//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 jogadores a serem incluídos
// pelo Ranking (r), 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 r, int g, int n, int nc, char jogadores[80][20])
{
char tabela[] = "Tabelas.txt";
FILE *arq;
char grupos[16][80][20];
char nomeGrupo[16] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'};
int i, j;
int c = 0;
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; //Número de jogadores além incluídos pelo RANKING
int extra[8];
int offset = 0;
arq = fopen(tabela, "a");
fprintf(arq, "\nCOMPETIÇÃO NO FORMATO COPA: \n");
fprintf(arq, "-> %2d GRUPOS\n-> %2d Classificados cada GRUPO\n", g, nc);
fprintf(arq, "\n+----------------------------------------------------+");
fprintf(arq, "\n TABELAS DE JOGOS: ");
fprintf(arq, "\n+----------------------------------------------------+");
fclose(arq);
//Inclusão de jogadores nos GRUPOS de acordo com RANKING
if (r >= 1)
{
for (i = 0; i < g; i++) //Cabeças de GRUPO
strcpy(grupos[i][0], jogadores[i]);
ng = n - g; //Número total de jogadores restantes
c = 1;
}
if (r >= 2)
{
for (i = 0; i < g; i++) //Segundo integrante do GRUPO na ordem inversa
strcpy(grupos[i][1], jogadores[2 * g - 1 - i]);
ng = n - 2 * g; //Número total de jogadores restantes
c = 2;
}
if ((r >= 3) && (n / g > 2))
{
for (i = 0; i < g; i++) //Terceiro integrante do GRUPO
strcpy(grupos[i][2], jogadores[2 * g + i]);
ng = n - 3 * g; //Número total de jogadores restantes
c = 3;
}
if ((r == 4) && (n / g > 3))
{
for (i = 0; i < g; i++) //Terceiro integrante do GRUPO
strcpy(grupos[i][3], jogadores[4 * g - 1 - i]);
ng = n - 4 * g; //Número total de jogadores restantes
c = 4;
}
for (i = 0; i < ng; i++)
strcpy(jogadores[i], jogadores[c * g + i]); //Retira jogadores já incluídos
if (r != 4)
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 o restante dos jogadores nos GRUPOS
strcpy(grupos[j][i+c], 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+------------------------------------------------+");
fprintf(arq, "\n| GRUPO %c : Jogadores | Vitórias | Saldo de Sets |", nomeGrupo[j]);
fprintf(arq, "\n+---------------------+----------+---------------+\n");
//Imprime os membros de cada GRUPO
for (i = 0; i < n/g + extra[j]; i++)
fprintf(arq, "|%20s | | |\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 strings que definem a ordem dos confrontos
//para as Finais no formato Copa, considerando o número de grupos (g)
//e o número de classificados (c) por grupo.
char final2g2c[][20] = {
"1o Grupo A ________", "1o Grupo B ________",
"2o Grupo A ________", "2o Grupo B ________"};
char final2g3c[][20] = {
"1o Grupo A ________", "1o Grupo B ________", "2o Grupo A ________",
"2o Grupo B ________", "3o Grupo A ________", "3o Grupo B ________"};
char final3g2c[][20] = {
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________",
"2o Grupo B ________", "2o Grupo C ________", "2o Grupo A ________"};
char final3g3c[][20] = {
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________",
"2o Grupo B ________", "2o Grupo C ________", "2o Grupo A ________",
"3o Grupo A ________", "3o Grupo B ________", "3o Grupo C ________"};
char final4g2c[][20] = {
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________", "1o Grupo D ________",
"2o Grupo B ________", "2o Grupo A ________", "2o Grupo D ________", "2o Grupo C ________"};
char final4g3c[][20] = {
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________", "1o Grupo D ________",
"2o Grupo B ________", "2o Grupo A ________", "2o Grupo D ________", "2o Grupo C ________",
"3o Grupo B ________", "3o Grupo A ________", "3o Grupo D ________", "3o Grupo C ________"};
char final5g2c[][20] = {
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________",
"1o Grupo D ________", "1o Grupo E ________",
"2o Grupo A ________", "2o Grupo E ________", "2o Grupo B ________",
"2o Grupo C ________", "2o Grupo D ________"};
char final5g3c[][20] = {
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________",
"1o Grupo D ________", "1o Grupo E ________",
"2o Grupo A ________", "2o Grupo E ________", "2o Grupo B ________",
"2o Grupo C ________", "2o Grupo D ________",
"3o Grupo D ________", "3o Grupo A ________", "3o Grupo E ________",
"3o Grupo B ________", "3o Grupo C ________",};
char final6g2c[][20] = {
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________",
"1o Grupo D ________", "1o Grupo E ________", "1o Grupo F ________",
"2o Grupo E ________", "2o Grupo F ________", "2o Grupo B ________",
"2o Grupo A ________", "2o Grupo D ________", "2o Grupo C ________"};
char final6g3c[][20] = {
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________",
"1o Grupo D ________", "1o Grupo E ________", "1o Grupo F ________",
"2o Grupo E ________", "2o Grupo F ________", "2o Grupo B ________",
"2o Grupo A ________", "2o Grupo D ________", "2o Grupo C ________",
"3o Grupo A ________", "3o Grupo B ________", "3o Grupo C ________",
"3o Grupo D ________", "3o Grupo E ________", "3o Grupo F ________"};
char final7g[][20] = {
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________",
"1o Grupo D ________", "1o Grupo E ________", "1o Grupo F ________", "1o Grupo G ________",
"2o Grupo B ________", "2o Grupo G ________", "2o Grupo A ________",
"2o Grupo D ________", "2o Grupo C ________", "2o Grupo F ________", "2o Grupo E ________"};
char final8g[][20] = {
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________", "1o Grupo D ________",
"1o Grupo E ________", "1o Grupo F ________", "1o Grupo G ________", "1o Grupo H ________",
"2o Grupo B ________", "2o Grupo A ________", "2o Grupo D ________", "2o Grupo C ________",
"2o Grupo F ________", "2o Grupo E ________", "2o Grupo H ________", "2o Grupo G ________"};
char final12g[][20] = {
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________", "1o Grupo D ________",
"1o Grupo E ________", "1o Grupo F ________", "1o Grupo G ________", "1o Grupo H ________",
"1o Grupo I ________", "1o Grupo J ________", "1o Grupo K ________", "1o Grupo L ________",
"2o Grupo C ________", "2o Grupo D ________", "2o Grupo E ________", "2o Grupo F ________",
"2o Grupo G ________", "2o Grupo H ________", "2o Grupo A ________", "2o Grupo B ________",
"2o Grupo J ________", "2o Grupo L ________", "2o Grupo I ________", "2o Grupo K ________"};
char final16g[][20] = {
"1o Grupo A ________", "1o Grupo B ________", "1o Grupo C ________", "1o Grupo D ________",
"1o Grupo E ________", "1o Grupo F ________", "1o Grupo G ________", "1o Grupo H ________",
"1o Grupo I ________", "1o Grupo J ________", "1o Grupo K ________", "1o Grupo L ________",
"1o Grupo M ________", "1o Grupo N ________", "1o Grupo O ________", "1o Grupo P ________",
"2o Grupo B ________", "2o Grupo A ________", "2o Grupo D ________", "2o Grupo C ________",
"2o Grupo F ________", "2o Grupo E ________", "2o Grupo H ________", "2o Grupo G ________",
"2o Grupo J ________", "2o Grupo I ________", "2o Grupo L ________", "2o Grupo K ________",
"2o Grupo N ________", "2o Grupo M ________", "2o Grupo P ________", "2o Grupo O ________"};
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 5:
if (nc == 2)
matamata(g * nc, final5g2c);
if (nc == 3)
matamata(g * nc, final5g3c);
break;
case 6:
if (nc == 2)
matamata(g * nc, final6g2c);
if (nc == 3)
matamata(g * nc, final6g3c);
break;
case 7:
matamata(g * nc, final7g);
break;
case 8:
matamata(g * nc, final8g);
break;
case 12:
matamata(g * nc, final12g);
break;
case 16:
matamata(g * nc, final16g);
break;
}
}
//Arquivo MataMata.c
//Programa Gerador de Tabelas Esportivas
//Função matamata utilizada pelo programa principal.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
//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[] = "Tabelas.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]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+\n", jogadores[1]);
break;
case 3:
fprintf(arq, "\n%18sSF F\n","");
fprintf(arq, "\n%25s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----","");
fprintf(arq, "\n%20s ----+ |", jogadores[2]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+\n", jogadores[1]);
break;
case 4:
fprintf(arq, "\n%20s SF F\n","");
fprintf(arq, "\n%20s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ |", jogadores[3]);
fprintf(arq, "\n%20s |----","");
fprintf(arq, "\n%20s ----+ |", jogadores[2]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+\n", jogadores[1]);
break;
case 5:
fprintf(arq, "\n%18sQF SF F\n","");
fprintf(arq, "\n%25s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[4]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |----", jogadores[3]);
fprintf(arq, "\n%20s | ","");
fprintf(arq, "\n%25s ----+ |", jogadores[2]);
fprintf(arq, "\n%25s |----+","");
fprintf(arq, "\n%25s ----+\n", jogadores[1]);
break;
case 6:
fprintf(arq, "\n%18sQF SF F\n","");
fprintf(arq, "\n%25s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[4]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |", jogadores[3]);
fprintf(arq, "\n%20s |----","");
fprintf(arq, "\n%20s ----+ |", jogadores[2]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[5]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%25s ----+\n", jogadores[1]);
break;
case 7:
fprintf(arq, "\n%18sQF SF F\n","");
fprintf(arq, "\n%25s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[4]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |", jogadores[3]);
fprintf(arq, "\n%20s |---","");
fprintf(arq, "\n%20s ----+ |", jogadores[2]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[5]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ |", jogadores[6]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+\n", jogadores[1]);
break;
case 8:
fprintf(arq, "\n%20s QF SF F\n","");
fprintf(arq, "\n%20s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ |", jogadores[7]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[4]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |", jogadores[3]);
fprintf(arq, "\n%20s |----","");
fprintf(arq, "\n%20s ----+ |", jogadores[2]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[5]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ |", jogadores[6]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+\n", jogadores[1]);
break;
case 9:
//matamata 5
fprintf(arq, "\n%18sOF QF SF F\n","");
fprintf(arq, "\n%25s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[8]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |----+", jogadores[7]);
fprintf(arq, "\n%20s | |","");
fprintf(arq, "\n%25s ----+ | |", jogadores[4]);
fprintf(arq, "\n%25s |----+ |","");
fprintf(arq, "\n%25s ----+ |----", jogadores[3]);
fprintf(arq, "\n%25s |","");
//matamata 4
fprintf(arq, "\n%25s ----+ |", jogadores[2]);
fprintf(arq, "\n%25s |----+ |","");
fprintf(arq, "\n%25s ----+ | |", jogadores[5]);
fprintf(arq, "\n%25s |----+","");
fprintf(arq, "\n%25s ----+ |", jogadores[6]);
fprintf(arq, "\n%25s |----+","");
fprintf(arq, "\n%25s ----+\n", jogadores[1]);
break;
case 10:
//matamata 5
fprintf(arq, "\n%18sOF QF SF F\n","");
fprintf(arq, "\n%25s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[8]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |----+", jogadores[7]);
fprintf(arq, "\n%20s | |","");
fprintf(arq, "\n%25s ----+ | |", jogadores[4]);
fprintf(arq, "\n%25s |----+ |","");
fprintf(arq, "\n%25s ----+ |", jogadores[3]);
fprintf(arq, "\n%25s |----","");
//matamata 5
fprintf(arq, "\n%25s ----+ |", jogadores[2]);
fprintf(arq, "\n%25s |----+ |","");
fprintf(arq, "\n%25s ----+ | |", jogadores[5]);
fprintf(arq, "\n%25s | |","");
fprintf(arq, "\n%20s ----+ |----+", jogadores[6]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[9]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%25s ----+\n", jogadores[1]);
break;
case 11:
//matamata 5
fprintf(arq, "\n%18sOF QF SF F\n","");
fprintf(arq, "\n%25s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[8]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |----+", jogadores[7]);
fprintf(arq, "\n%20s | |","");
fprintf(arq, "\n%25s ----+ | |", jogadores[4]);
fprintf(arq, "\n%25s |----+ |","");
fprintf(arq, "\n%25s ----+ |", jogadores[3]);
fprintf(arq, "\n%25s |----","");
//matamata 6
fprintf(arq, "\n%25s ----+ |", jogadores[2]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[10]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | ", jogadores[5]);
fprintf(arq, "\n%20s | |","");
fprintf(arq, "\n%20s ----+ |----+", jogadores[6]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[9]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%25s ----+\n", jogadores[1]);
break;
case 12:
//matamata 6
fprintf(arq, "\n%18sOF QF SF F\n","");
fprintf(arq, "\n%25s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[8]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |----+", jogadores[7]);
fprintf(arq, "\n%20s | |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[4]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[11]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%25s ----+ |", jogadores[3]);
fprintf(arq, "\n%20s |-----","");
//matamata 6
fprintf(arq, "\n%25s ----+ |", jogadores[2]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[10]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | ", jogadores[5]);
fprintf(arq, "\n%20s | |","");
fprintf(arq, "\n%20s ----+ |----+", jogadores[6]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[9]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%25s ----+\n", jogadores[1]);
break;
case 13:
//matamata 7
fprintf(arq, "\n%18sOF QF SF F\n","");
fprintf(arq, "\n%25s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[7]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |----+", jogadores[8]);
fprintf(arq, "\n%20s | |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[4]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[11]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[12]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |-----", jogadores[3]);
fprintf(arq, "\n%20s |","");
//matamata 6
fprintf(arq, "\n%25s ----+ |", jogadores[2]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[10]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | ", jogadores[5]);
fprintf(arq, "\n%20s | |","");
fprintf(arq, "\n%20s ----+ |----+", jogadores[6]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[9]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%25s ----+\n", jogadores[1]);
break;
case 14:
//matamata 7
fprintf(arq, "\n%18sOF QF SF F\n","");
fprintf(arq, "\n%25s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[8]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |----+", jogadores[7]);
fprintf(arq, "\n%20s | |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[4]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[11]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[12]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |", jogadores[3]);
fprintf(arq, "\n%20s |-----","");
//matamata 7
fprintf(arq, "\n%20s ----+ |", jogadores[2]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[13]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[10]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | ", jogadores[5]);
fprintf(arq, "\n%20s | |","");
fprintf(arq, "\n%20s ----+ |----+", jogadores[6]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[9]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%25s ----+\n", jogadores[1]);
break;
case 15:
//matamata 7
fprintf(arq, "\n%18sOF QF SF F\n","");
fprintf(arq, "\n%25s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[8]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |", jogadores[7]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[4]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[11]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[12]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |", jogadores[3]);
fprintf(arq, "\n%20s |-----","");
//matamata 8
fprintf(arq, "\n%20s ----+ |", jogadores[2]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[13]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[10]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | ", jogadores[5]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ |", jogadores[6]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[9]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ |", jogadores[14]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+\n", jogadores[1]);
break;
case 16:
//matamata 8
fprintf(arq, "\n%18sOF QF SF F\n","");
fprintf(arq, "\n%20s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ |", jogadores[15]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[8]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |", jogadores[7]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[4]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[11]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[12]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |", jogadores[3]);
fprintf(arq, "\n%20s |-----","");
//matamata 8
fprintf(arq, "\n%20s ----+ |", jogadores[2]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[13]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[10]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | ", jogadores[5]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ |", jogadores[6]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[9]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ |", jogadores[14]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+\n", jogadores[1]);
break;
case 18:
//matamata 9
fprintf(arq, "\n%22s16F OF QF SF F\n","");
fprintf(arq, "\n%25s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[16]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |----+", jogadores[15]);
fprintf(arq, "\n%20s | |","");
fprintf(arq, "\n%25s ----+ | |", jogadores[8]);
fprintf(arq, "\n%25s |----+ |","");
fprintf(arq, "\n%25s ----+ |----+", jogadores[7]);
fprintf(arq, "\n%25s | |","");
fprintf(arq, "\n%25s ----+ | |", jogadores[4]);
fprintf(arq, "\n%25s |----+ | |","");
fprintf(arq, "\n%25s ----+ | | |", jogadores[11]);
fprintf(arq, "\n%25s |----+ |","");
fprintf(arq, "\n%25s ----+ | |", jogadores[12]);
fprintf(arq, "\n%25s |----+ |","");
fprintf(arq, "\n%25s ----+ |", jogadores[3]);
fprintf(arq, "\n%25s |-----","");
//matamata 9
fprintf(arq, "\n%25s ----+ |", jogadores[2]);
fprintf(arq, "\n%25s |----+ |","");
fprintf(arq, "\n%25s ----+ | |", jogadores[13]);
fprintf(arq, "\n%25s |----+ |","");
fprintf(arq, "\n%25s ----+ | | |", jogadores[10]);
fprintf(arq, "\n%25s |----+ | |","");
fprintf(arq, "\n%25s ----+ | | ", jogadores[5]);
fprintf(arq, "\n%25s |----+","");
fprintf(arq, "\n%25s ----+ |", jogadores[6]);
fprintf(arq, "\n%25s |----+ |","");
fprintf(arq, "\n%25s ----+ | |", jogadores[9]);
fprintf(arq, "\n%20s | |","");
fprintf(arq, "\n%20s ----+ |----+", jogadores[14]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[17]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%25s ----+\n", jogadores[1]);
break;
case 24:
//matamata 12
fprintf(arq, "\n%18s16F OF QF SF F\n","");
fprintf(arq, "\n%25s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[16]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |----+", jogadores[15]);
fprintf(arq, "\n%20s | |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[8]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[23]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%25s ----+ |", jogadores[7]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%25s ----+ | |", jogadores[4]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | | |", jogadores[20]);
fprintf(arq, "\n%20s |----+ | | |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[11]);
fprintf(arq, "\n%20s | | |","");
fprintf(arq, "\n%20s ----+ |----+ |", jogadores[12]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[19]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%25s ----+ |", jogadores[3]);
fprintf(arq, "\n%20s |-----","");
//matamata 12
fprintf(arq, "\n%25s ----+ |", jogadores[2]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[18]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ |----+ |", jogadores[13]);
fprintf(arq, "\n%20s | | |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[10]);
fprintf(arq, "\n%20s |----+ | | |","");
fprintf(arq, "\n%20s ----+ | | | |", jogadores[21]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%25s ----+ | |", jogadores[5]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%25s ----+ |", jogadores[6]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[22]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | ", jogadores[9]);
fprintf(arq, "\n%20s | |","");
fprintf(arq, "\n%20s ----+ |----+", jogadores[14]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[17]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%25s ----+\n", jogadores[1]);
break;
case 32:
//matamata 16
fprintf(arq, "\n%18s16F OF QF SF F\n","");
fprintf(arq, "\n%20s ----+", jogadores[0]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ |", jogadores[31]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[16]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |", jogadores[15]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[8]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[23]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[24]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |", jogadores[7]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ | |", jogadores[4]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[27]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | | |", jogadores[20]);
fprintf(arq, "\n%20s |----+ | | |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[11]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[12]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[19]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[28]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ |", jogadores[3]);
fprintf(arq, "\n%20s |----+","");
//matamata 16
fprintf(arq, "\n%20s ----+ |", jogadores[2]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[29]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[18]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[13]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[10]);
fprintf(arq, "\n%20s |----+ | | |","");
fprintf(arq, "\n%20s ----+ | | | |", jogadores[21]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[26]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[5]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ |", jogadores[6]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[25]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | | |", jogadores[22]);
fprintf(arq, "\n%20s |----+ | |","");
fprintf(arq, "\n%20s ----+ | | ", jogadores[9]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ |", jogadores[14]);
fprintf(arq, "\n%20s |----+ |","");
fprintf(arq, "\n%20s ----+ | |", jogadores[17]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+ |", jogadores[30]);
fprintf(arq, "\n%20s |----+","");
fprintf(arq, "\n%20s ----+\n", jogadores[1]);
break;
}
fclose(arq);
}
- Versão para Windows
- Para rodar no sistema operacional Windows o código fonte deve ser compilado neste sistema. Caso prefira, pode solicitar por email o arquivo executável do programa diretamente do desenvolvedor.