PFC 2016:Gerenciador de Tabelas Esportivas: mudanças entre as edições
De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
(17 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 33: | Linha 33: | ||
;Chaves e formato da competição em função do número de inscritos: | ;Chaves e formato da competição em função do número de inscritos: | ||
;Rodízio: Até 5 inscritos, todos contra todos: | |||
*3 inscritos: 3 partidas | |||
*4 inscritos: 6 partidas | |||
*5 inscritos: 10 partidas | |||
;2 grupos: | ;2 grupos: Classificam 1º e 2º de cada chave. | ||
*6 inscritos -> 2 chaves de 3 | *6 inscritos -> 2 chaves de 3 | ||
*7 inscritos -> 1 chave de 4 e 1 chave de 3 | *7 inscritos -> 1 chave de 4 e 1 chave de 3 | ||
*8 inscritos -> 2 chaves de 4 | *8 inscritos -> 2 chaves de 4 | ||
;3 grupos: | |||
;3 grupos: Classificam 1º e 2º de cada Grupo e os dois melhores 3º. | |||
*9 inscritos -> 3 chaves de 3 (classificam 1º e 2º de cada chave) | *9 inscritos -> 3 chaves de 3 (classificam 1º e 2º de cada chave) | ||
*10 inscritos -> 1 chave de 4 e 2 chaves de 3 (classificam 1º e 2º de cada chave) | *10 inscritos -> 1 chave de 4 e 2 chaves de 3 (classificam 1º e 2º de cada chave) | ||
*11 inscritos -> 2 chaves de 4 e 1 chave de 3 (classificam 1º e 2º de cada chave) | *11 inscritos -> 2 chaves de 4 e 1 chave de 3 (classificam 1º e 2º de cada chave) | ||
;4 grupos: | |||
*12 inscritos -> 4 chaves de 3 | ;4 grupos: Classificam 1º e 2º de cada chave. | ||
*13 inscritos -> 1 chave de 4 e 3 chaves de 3 | *12 inscritos -> 4 chaves de 3 | ||
*14 inscritos -> 2 chaves de 4 e 2 chaves de 3 | *13 inscritos -> 1 chave de 4 e 3 chaves de 3 | ||
*15 inscritos -> 3 chaves de 4 e 1 chave de 3 | *14 inscritos -> 2 chaves de 4 e 2 chaves de 3 | ||
*16 inscritos -> 4 chaves de 4 | *15 inscritos -> 3 chaves de 4 e 1 chave de 3 | ||
*17 inscritos -> 3 chaves de 4 e 1 chave de 5 | *16 inscritos -> 4 chaves de 4 | ||
*17 inscritos -> 3 chaves de 4 e 1 chave de 5 | |||
*18 inscritos -> 6 chaves de 3 | |||
*19 inscritos -> 5 chaves de 3 e 1 chave de 4 | ;6 grupos: Classificam 1º e 2º de cada chave. | ||
*20 inscritos -> 4 chaves de 3 e 2 chave de 4 | : O 1º dos grupos 1, 2, 3 e 4 entram como '''avulsos''' nas quartas de final. | ||
*18 inscritos -> 6 chaves de 3 | |||
*19 inscritos -> 5 chaves de 3 e 1 chave de 4 | |||
*20 inscritos -> 4 chaves de 3 e 2 chave de 4 | |||
;[[Mídia:TabelasPFC.ods|Tabelas para jogos em função dos inscritos]] | ;[[Mídia:TabelasPFC.ods|Tabelas para jogos em função dos inscritos]] | ||
=== | ===Algoritmo Competições=== | ||
[http://200.17.101.9:8080/rid=1QMMZ66HQ-28RYD54-1ZS/AlgoritmoCompeticao.cmap Algoritmo] | |||
;Inscritos: '''vetor''' [2 a N inscritos] | |||
;Sorteio Chaves: Escolhe aleatoriamente os integrantes de cada chave, se inscritos >= 6 (menos o cabeça de chave, se houver) | |||
;Função Rodízio: Recebe '''vetor''' [2 a 5 elementos] e define confrontos do rodízio. | |||
Exemplo: | |||
vetor[A, B, C, D] | |||
A _ x _ B | |||
C _ x _ D | |||
A _ x _ C | |||
B _ x _ D | |||
A _ x _ D | |||
B _ x _ C | |||
;Função Eliminatórias: Recebe '''vetor''' [2 a M elementos] e define confrontos eliminatórios. | |||
Exemplo: | |||
vetor[A, B, C, D] | |||
A --+ | |||
|--+ | |||
B --+ | | |||
|-- | |||
C --+ | | |||
|--+ | |||
D --+ | |||
===Algoritmos em C=== | |||
<syntaxhighlight lang="c"> | |||
#include <stdio.h> | |||
#include <stdlib.h> | |||
#include <string.h> | |||
#include <time.h> | |||
int entraJogador (char *novoJogador) | |||
{ | |||
int tam; | |||
printf ("\n Entre com novo JOGADOR ou tecle Enter para finalizar:\n"); | |||
fgets(novoJogador, sizeof(novoJogador), stdin); | |||
tam = strlen(novoJogador); | |||
if (novoJogador[tam - 1] == '\n') //Limpa \n do final do caracter | |||
{ | |||
novoJogador[tam - 1] = '\0'; | |||
tam = tam -1; | |||
} | |||
printf ("Jogador: %s\n", novoJogador); | |||
return (tam); | |||
} | |||
[[ | void rodizio (int n, char jogadores[32][20]) | ||
{ | |||
int c = 0; | |||
int i, j; | |||
printf ("\n\nPARTIDAS DO RODÍZIO: \n"); | |||
for (i=0;i<n;i++) | |||
for (j=i+1;j<n;j++) | |||
printf ("%2d: %12s x %-12s\n", ++c, jogadores[i], jogadores[j]); | |||
} | |||
void matamata (int n, char jogadores[32][20]); | |||
== | 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); | |||
} | |||
} | |||
int calExtra (int *mod) | |||
* | { | ||
* | if (*mod > 0) | ||
{ | |||
*mod = *mod - 1; | |||
return (1); | |||
} | |||
return (0); | |||
} | |||
=== | void copa (int g, int n, char jogadores[32][20]) | ||
{ | |||
char grupos[8][32][20]; | |||
char finais[32][20]; | |||
int f = 0; //Índice para vetor finais | |||
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 nc = 2; //Número de classificados por GRUPO | |||
int extra[8]; | |||
int offset = 0; | |||
printf("\nCABEÇAS DE CHAVE: "); | |||
for (i = 0; i < g; i++) //Cabeça de GRUPO | |||
{ | |||
strcpy(grupos[i][0], jogadores[i]); | |||
printf("\n %d: %12s", i + 1, grupos[i][0]); | |||
} | |||
ng = n - g; | |||
for (i = 0; i < ng; i++) //Retira cabeças de GRUPO | |||
strcpy(jogadores[i], jogadores[i+g]); | |||
embaralhar(jogadores, ng); //Embaralha restantes | |||
for (j = 0; j < g; j++) //Monta GRUPOS | |||
{ | |||
extra[j] = calExtra(&mod); | |||
for (i = 0; i < ng/g + extra[j]; i++) | |||
strcpy(grupos[j][i+1], jogadores[i + offset]); | |||
offset = offset + ng/g + extra[j]; | |||
printf("\n\nGRUPO %d: ", j + 1); | |||
for (i = 0; i < n/g + extra[j]; i++) | |||
printf("\n %s ", grupos[j][i]); | |||
rodizio (n/g + extra[j], grupos[j]); | |||
sprintf(finais[f], "1o Grupo %d", j + 1); | |||
sprintf(finais[f + g], "2o Grupo %d", j + 1); | |||
f++; | |||
} | |||
matamata(g * nc, finais); | |||
} | |||
=== | void main () | ||
{ | |||
int tam; | |||
char novoJogador[20]; | |||
char jogadores[32][20]; | |||
int n = 0; //número de jogadores cadastrados | |||
int g = 0; //número de grupos | |||
int i; | |||
char resposta, resposta2; | |||
printf ("\nCADASTRO DE JOGADORES\n"); | |||
printf ("\nCadastre jogadores de acordo com o RANKING ou CABEÇAS DE GRUPO.\n"); | |||
do | |||
{ | |||
tam = entraJogador (novoJogador); | |||
if (tam > 0) | |||
{ | |||
strcpy(jogadores[n], novoJogador); | |||
n++; | |||
printf ("n: %d\n", n); | |||
} | |||
} while (tam > 0); | |||
printf ("\nJOGADORES CADASTRADOS:\n"); | |||
for (i=0; i<n; i++) | |||
printf (" %2d: %12s\n", i + 1, jogadores[i]); | |||
printf ("\nESCOHA FORMATO DA COMPETIÇÃO: \n"); | |||
printf (" (R) Rodízio simples (Até 5 jogadores)\n"); | |||
printf (" (E) Eliminatória simples (Implementado até 8 jogadores)\n"); | |||
if (n >= 6 && n <= 32) | |||
printf (" (C) Copa: Grupos + Fase Final (Acima de 6 jogadores)\n"); | |||
scanf (" %c",&resposta); | |||
if (resposta == 'r' || resposta == 'R') | |||
rodizio (n, jogadores); | |||
if (resposta == 'e' || resposta == 'E') | |||
matamata(n, jogadores); | |||
if (resposta == 'c' || resposta == 'C') | |||
{ | |||
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') | |||
g = 2; | |||
if (resposta == '3') | |||
g = 3; | |||
if (resposta == '4') | |||
g = 4; | |||
if (resposta == '6') | |||
g = 6; | |||
if (resposta == '8') | |||
g = 8; | |||
copa(g, n, jogadores); | |||
} | |||
} | |||
void matamata (int n, char jogadores[32][20]) | |||
{ | |||
printf ("\nPARTIDAS ELIMINATÓRIASS: \n"); | |||
switch (n) | |||
{ | |||
case 2: | |||
printf("\n%12s\t---+", jogadores[0]); //1---+ | |||
printf("\n\t\t |---+"); // |---+ | |||
printf("\n%12s\t---+\n", jogadores[1]); //2---+ | |||
break; | |||
case 3: | |||
printf("\n%12s\t-------+", jogadores[0]); //1-------+ | |||
printf("\n\t\t |---"); // |--- | |||
printf("\n%12s\t---+ |", jogadores[1]); //2---+ | | |||
printf("\n\t\t |---+"); // |---+ | |||
printf("\n%12s\t---+\n", jogadores[2]); //3---+ | |||
break; | |||
case 4: | |||
printf("\n%12s\t---+", jogadores[0]); //1---+ | |||
printf("\n\t\t |---+"); // |---+ | |||
printf("\n%12s\t---+ |", jogadores[3]); //4---+ | | |||
printf("\n\t\t |---"); // |--- | |||
printf("\n%12s\t---+ |", jogadores[1]); //2---+ | | |||
printf("\n\t\t |---+"); // |--- | |||
printf("\n%12s\t---+\n", jogadores[2]); //3---+ | |||
break; | |||
case 5: | |||
printf("\n%12s\t-------+", jogadores[0]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[3]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |---\n", jogadores[4]); | |||
printf("\t\t |"); | |||
printf("\n%12s\t---+ |", jogadores[1]); | |||
printf("\n\t\t |-------+"); | |||
printf("\n%12s\t---+\n", jogadores[2]); | |||
break; | |||
case 6: | |||
printf("\n%12s\t-------+", jogadores[0]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[4]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |---\n", jogadores[5]); | |||
printf("\t\t |"); | |||
printf("\n%12s\t-------+ |", jogadores[1]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[2]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ \n", jogadores[3]); | |||
break; | |||
case 7: | |||
printf("\n%12s\t-------+", jogadores[0]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[3]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |\n", jogadores[4]); | |||
printf("\t\t |---"); | |||
printf("\n%12s\t---+ |", jogadores[1]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ | |", jogadores[5]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[2]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+\n", jogadores[5]); | |||
break; | |||
case 8: | |||
printf("\n%12s\t---+", jogadores[0]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[6]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[3]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |\n", jogadores[5]); | |||
printf("\t\t |---"); | |||
printf("\n%12s\t---+ |", jogadores[1]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ | |", jogadores[7]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[2]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+\n", jogadores[4]); | |||
break; | |||
case 9: | |||
//matamata 5 | |||
printf("\n%12s\t-------+", jogadores[0]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[7]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |---\n", jogadores[8]); | |||
printf("\t\t |"); | |||
printf("\n%12s\t---+ |", jogadores[3]); | |||
printf("\n\t\t |-------+"); | |||
printf("\n%12s\t---+\n", jogadores[4]); | |||
//matamata 4 | |||
printf("\n%12s\t---+", jogadores[1]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[6]); | |||
printf("\n\t\t |-------"); | |||
printf("\n%12s\t---+ |", jogadores[2]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+\n", jogadores[5]); | |||
break; | |||
case 10: | |||
//matamata 5 | |||
printf("\n%12s\t-------+", jogadores[0]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[7]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |---\n", jogadores[8]); | |||
printf("\t\t |"); | |||
printf("\n%12s\t---+ |", jogadores[3]); | |||
printf("\n\t\t |-------+"); | |||
printf("\n%12s\t---+\n", jogadores[4]); | |||
//matamata 5 | |||
printf("\n%12s\t-------+", jogadores[1]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[6]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |---\n", jogadores[9]); | |||
printf("\t\t |"); | |||
printf("\n%12s\t---+ |", jogadores[2]); | |||
printf("\n\t\t |-------+"); | |||
printf("\n%12s\t---+\n", jogadores[5]); | |||
break; | |||
case 11: | |||
//matamata 5 | |||
printf("\n%12s\t-------+", jogadores[0]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[7]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |---\n", jogadores[8]); | |||
printf("\t\t |"); | |||
printf("\n%12s\t---+ |", jogadores[3]); | |||
printf("\n\t\t |-------+"); | |||
printf("\n%12s\t---+\n", jogadores[4]); | |||
//matamata 6 | |||
printf("\n%12s\t-------+", jogadores[1]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[6]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |---\n", jogadores[9]); | |||
printf("\t\t |"); | |||
printf("\n%12s\t-------+ |", jogadores[2]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[5]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ \n", jogadores[10]); | |||
break; | |||
case 12: | |||
//matamata 6 | |||
printf("\n%12s\t-------+", jogadores[0]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[7]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |---\n", jogadores[8]); | |||
printf("\t\t |"); | |||
printf("\n%12s\t-------+ |", jogadores[3]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[4]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ \n", jogadores[11]); | |||
//matamata 6 | |||
printf("\n%12s\t-------+", jogadores[1]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[6]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |---\n", jogadores[9]); | |||
printf("\t\t |"); | |||
printf("\n%12s\t-------+ |", jogadores[2]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[5]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ \n", jogadores[10]); | |||
break; | |||
case 13: | |||
//matamata 7 | |||
printf("\n%12s\t-------+", jogadores[0]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[7]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |\n", jogadores[8]); | |||
printf("\t\t |---"); | |||
printf("\n%12s\t---+ |", jogadores[3]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ | |", jogadores[12]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[4]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+\n", jogadores[11]); | |||
//matamata 6 | |||
printf("\n%12s\t-------+", jogadores[1]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[6]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |---\n", jogadores[9]); | |||
printf("\t\t |"); | |||
printf("\n%12s\t-------+ |", jogadores[2]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[5]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ \n", jogadores[10]); | |||
break; | |||
case 14: | |||
//matamata 7 | |||
printf("\n%12s\t-------+", jogadores[0]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[7]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |\n", jogadores[8]); | |||
printf("\t\t |---"); | |||
printf("\n%12s\t---+ |", jogadores[3]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ | |", jogadores[12]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[4]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+\n", jogadores[11]); | |||
//matamata 7 | |||
printf("\n%12s\t-------+", jogadores[1]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[6]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |\n", jogadores[9]); | |||
printf("\t\t |---"); | |||
printf("\n%12s\t---+ |", jogadores[2]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ | |", jogadores[13]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[5]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+\n", jogadores[10]); | |||
break; | |||
case 15: | |||
//matamata 7 | |||
printf("\n%12s\t-------+", jogadores[0]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[7]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |\n", jogadores[8]); | |||
printf("\t\t |---"); | |||
printf("\n%12s\t---+ |", jogadores[3]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ | |", jogadores[12]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[4]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+\n", jogadores[11]); | |||
//matamata 8 | |||
printf("\n%12s\t---+", jogadores[1]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[14]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[6]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |\n", jogadores[9]); | |||
printf("\t\t |---"); | |||
printf("\n%12s\t---+ |", jogadores[2]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ | |", jogadores[13]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[5]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+\n", jogadores[10]); | |||
break; | |||
case 16: | |||
//matamata 8 | |||
printf("\n%12s\t---+", jogadores[0]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[14]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[7]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |\n", jogadores[9]); | |||
printf("\t\t |---"); | |||
printf("\n%12s\t---+ |", jogadores[3]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ | |", jogadores[13]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[4]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+\n", jogadores[10]); | |||
//matamata 8 | |||
printf("\n%12s\t---+", jogadores[1]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[15]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ | |", jogadores[6]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ |\n", jogadores[8]); | |||
printf("\t\t |---"); | |||
printf("\n%12s\t---+ |", jogadores[2]); | |||
printf("\n\t\t |---+ |"); | |||
printf("\n%12s\t---+ | |", jogadores[12]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+ |", jogadores[5]); | |||
printf("\n\t\t |---+"); | |||
printf("\n%12s\t---+\n", jogadores[11]); | |||
break; | |||
} | |||
} | |||
</syntaxhighlight> | |||
=== | ===Modelo Relacional do Banco de Dados=== | ||
[[Arquivo:workbench.png|700px]] | |||
--[[Usuário:Leonardo.zapola|Leonardo.zapola]] ([[Usuário Discussão:Leonardo.zapola|discussão]]) 14h11min de 7 de julho de 2016 (BRT) | |||
Discussão | |||
---- | ---- | ||
[[Categoria:PFC]] | [[Categoria:PFC]] |
Edição atual tal como às 11h19min de 3 de novembro de 2016
Projeto de Final de Curso
- Curso
- Técnico Integrado em Informática
- Equipe
- Gabriel Garcia da Rocha, Gabriel Severo e Leonardo Zapola
- Orientador
- Evandro Cantú
- Tema
- Gerenciador de Tabelas Esportivas
- Orientações
- Terças-feiras: 14h00 as 15h00
Especificações do Sistema
Usuários do sistema
Descrição dos usuários do sistema e os campos de devem ser armazenados no banco de dados:
- Usuário
- Nome de login
- Senha
- Nome Completo
- Dada Nascimento
- RG
- CPF
- Telefone
- Sexo
- Status de Usuários
- Administrador (Um no sistema)
- Organizador do Evento (Promovido pelo Administrador)
- Capitão de Equipe (Promovido pelo Organizador do Evento)
- Atletas
Tabelas
- Chaves e formato da competição em função do número de inscritos
- Rodízio
- Até 5 inscritos, todos contra todos:
- 3 inscritos: 3 partidas
- 4 inscritos: 6 partidas
- 5 inscritos: 10 partidas
- 2 grupos
- Classificam 1º e 2º de cada chave.
- 6 inscritos -> 2 chaves de 3
- 7 inscritos -> 1 chave de 4 e 1 chave de 3
- 8 inscritos -> 2 chaves de 4
- 3 grupos
- Classificam 1º e 2º de cada Grupo e os dois melhores 3º.
- 9 inscritos -> 3 chaves de 3 (classificam 1º e 2º de cada chave)
- 10 inscritos -> 1 chave de 4 e 2 chaves de 3 (classificam 1º e 2º de cada chave)
- 11 inscritos -> 2 chaves de 4 e 1 chave de 3 (classificam 1º e 2º de cada chave)
- 4 grupos
- Classificam 1º e 2º de cada chave.
- 12 inscritos -> 4 chaves de 3
- 13 inscritos -> 1 chave de 4 e 3 chaves de 3
- 14 inscritos -> 2 chaves de 4 e 2 chaves de 3
- 15 inscritos -> 3 chaves de 4 e 1 chave de 3
- 16 inscritos -> 4 chaves de 4
- 17 inscritos -> 3 chaves de 4 e 1 chave de 5
- 6 grupos
- Classificam 1º e 2º de cada chave.
- O 1º dos grupos 1, 2, 3 e 4 entram como avulsos nas quartas de final.
- 18 inscritos -> 6 chaves de 3
- 19 inscritos -> 5 chaves de 3 e 1 chave de 4
- 20 inscritos -> 4 chaves de 3 e 2 chave de 4
Algoritmo Competições
- Inscritos
- vetor [2 a N inscritos]
- Sorteio Chaves
- Escolhe aleatoriamente os integrantes de cada chave, se inscritos >= 6 (menos o cabeça de chave, se houver)
- Função Rodízio
- Recebe vetor [2 a 5 elementos] e define confrontos do rodízio.
Exemplo: vetor[A, B, C, D] A _ x _ B C _ x _ D A _ x _ C B _ x _ D A _ x _ D B _ x _ C
- Função Eliminatórias
- Recebe vetor [2 a M elementos] e define confrontos eliminatórios.
Exemplo: vetor[A, B, C, D] A --+ |--+ B --+ | |-- C --+ | |--+ D --+
Algoritmos em C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int entraJogador (char *novoJogador)
{
int tam;
printf ("\n Entre com novo JOGADOR ou tecle Enter para finalizar:\n");
fgets(novoJogador, sizeof(novoJogador), stdin);
tam = strlen(novoJogador);
if (novoJogador[tam - 1] == '\n') //Limpa \n do final do caracter
{
novoJogador[tam - 1] = '\0';
tam = tam -1;
}
printf ("Jogador: %s\n", novoJogador);
return (tam);
}
void rodizio (int n, char jogadores[32][20])
{
int c = 0;
int i, j;
printf ("\n\nPARTIDAS DO RODÍZIO: \n");
for (i=0;i<n;i++)
for (j=i+1;j<n;j++)
printf ("%2d: %12s x %-12s\n", ++c, jogadores[i], jogadores[j]);
}
void matamata (int n, char jogadores[32][20]);
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);
}
}
int calExtra (int *mod)
{
if (*mod > 0)
{
*mod = *mod - 1;
return (1);
}
return (0);
}
void copa (int g, int n, char jogadores[32][20])
{
char grupos[8][32][20];
char finais[32][20];
int f = 0; //Índice para vetor finais
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 nc = 2; //Número de classificados por GRUPO
int extra[8];
int offset = 0;
printf("\nCABEÇAS DE CHAVE: ");
for (i = 0; i < g; i++) //Cabeça de GRUPO
{
strcpy(grupos[i][0], jogadores[i]);
printf("\n %d: %12s", i + 1, grupos[i][0]);
}
ng = n - g;
for (i = 0; i < ng; i++) //Retira cabeças de GRUPO
strcpy(jogadores[i], jogadores[i+g]);
embaralhar(jogadores, ng); //Embaralha restantes
for (j = 0; j < g; j++) //Monta GRUPOS
{
extra[j] = calExtra(&mod);
for (i = 0; i < ng/g + extra[j]; i++)
strcpy(grupos[j][i+1], jogadores[i + offset]);
offset = offset + ng/g + extra[j];
printf("\n\nGRUPO %d: ", j + 1);
for (i = 0; i < n/g + extra[j]; i++)
printf("\n %s ", grupos[j][i]);
rodizio (n/g + extra[j], grupos[j]);
sprintf(finais[f], "1o Grupo %d", j + 1);
sprintf(finais[f + g], "2o Grupo %d", j + 1);
f++;
}
matamata(g * nc, finais);
}
void main ()
{
int tam;
char novoJogador[20];
char jogadores[32][20];
int n = 0; //número de jogadores cadastrados
int g = 0; //número de grupos
int i;
char resposta, resposta2;
printf ("\nCADASTRO DE JOGADORES\n");
printf ("\nCadastre jogadores de acordo com o RANKING ou CABEÇAS DE GRUPO.\n");
do
{
tam = entraJogador (novoJogador);
if (tam > 0)
{
strcpy(jogadores[n], novoJogador);
n++;
printf ("n: %d\n", n);
}
} while (tam > 0);
printf ("\nJOGADORES CADASTRADOS:\n");
for (i=0; i<n; i++)
printf (" %2d: %12s\n", i + 1, jogadores[i]);
printf ("\nESCOHA FORMATO DA COMPETIÇÃO: \n");
printf (" (R) Rodízio simples (Até 5 jogadores)\n");
printf (" (E) Eliminatória simples (Implementado até 8 jogadores)\n");
if (n >= 6 && n <= 32)
printf (" (C) Copa: Grupos + Fase Final (Acima de 6 jogadores)\n");
scanf (" %c",&resposta);
if (resposta == 'r' || resposta == 'R')
rodizio (n, jogadores);
if (resposta == 'e' || resposta == 'E')
matamata(n, jogadores);
if (resposta == 'c' || resposta == 'C')
{
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')
g = 2;
if (resposta == '3')
g = 3;
if (resposta == '4')
g = 4;
if (resposta == '6')
g = 6;
if (resposta == '8')
g = 8;
copa(g, n, jogadores);
}
}
void matamata (int n, char jogadores[32][20])
{
printf ("\nPARTIDAS ELIMINATÓRIASS: \n");
switch (n)
{
case 2:
printf("\n%12s\t---+", jogadores[0]); //1---+
printf("\n\t\t |---+"); // |---+
printf("\n%12s\t---+\n", jogadores[1]); //2---+
break;
case 3:
printf("\n%12s\t-------+", jogadores[0]); //1-------+
printf("\n\t\t |---"); // |---
printf("\n%12s\t---+ |", jogadores[1]); //2---+ |
printf("\n\t\t |---+"); // |---+
printf("\n%12s\t---+\n", jogadores[2]); //3---+
break;
case 4:
printf("\n%12s\t---+", jogadores[0]); //1---+
printf("\n\t\t |---+"); // |---+
printf("\n%12s\t---+ |", jogadores[3]); //4---+ |
printf("\n\t\t |---"); // |---
printf("\n%12s\t---+ |", jogadores[1]); //2---+ |
printf("\n\t\t |---+"); // |---
printf("\n%12s\t---+\n", jogadores[2]); //3---+
break;
case 5:
printf("\n%12s\t-------+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[3]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |---\n", jogadores[4]);
printf("\t\t |");
printf("\n%12s\t---+ |", jogadores[1]);
printf("\n\t\t |-------+");
printf("\n%12s\t---+\n", jogadores[2]);
break;
case 6:
printf("\n%12s\t-------+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[4]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |---\n", jogadores[5]);
printf("\t\t |");
printf("\n%12s\t-------+ |", jogadores[1]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[2]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ \n", jogadores[3]);
break;
case 7:
printf("\n%12s\t-------+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[3]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |\n", jogadores[4]);
printf("\t\t |---");
printf("\n%12s\t---+ |", jogadores[1]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ | |", jogadores[5]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[2]);
printf("\n\t\t |---+");
printf("\n%12s\t---+\n", jogadores[5]);
break;
case 8:
printf("\n%12s\t---+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[6]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[3]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |\n", jogadores[5]);
printf("\t\t |---");
printf("\n%12s\t---+ |", jogadores[1]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ | |", jogadores[7]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[2]);
printf("\n\t\t |---+");
printf("\n%12s\t---+\n", jogadores[4]);
break;
case 9:
//matamata 5
printf("\n%12s\t-------+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[7]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |---\n", jogadores[8]);
printf("\t\t |");
printf("\n%12s\t---+ |", jogadores[3]);
printf("\n\t\t |-------+");
printf("\n%12s\t---+\n", jogadores[4]);
//matamata 4
printf("\n%12s\t---+", jogadores[1]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[6]);
printf("\n\t\t |-------");
printf("\n%12s\t---+ |", jogadores[2]);
printf("\n\t\t |---+");
printf("\n%12s\t---+\n", jogadores[5]);
break;
case 10:
//matamata 5
printf("\n%12s\t-------+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[7]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |---\n", jogadores[8]);
printf("\t\t |");
printf("\n%12s\t---+ |", jogadores[3]);
printf("\n\t\t |-------+");
printf("\n%12s\t---+\n", jogadores[4]);
//matamata 5
printf("\n%12s\t-------+", jogadores[1]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[6]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |---\n", jogadores[9]);
printf("\t\t |");
printf("\n%12s\t---+ |", jogadores[2]);
printf("\n\t\t |-------+");
printf("\n%12s\t---+\n", jogadores[5]);
break;
case 11:
//matamata 5
printf("\n%12s\t-------+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[7]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |---\n", jogadores[8]);
printf("\t\t |");
printf("\n%12s\t---+ |", jogadores[3]);
printf("\n\t\t |-------+");
printf("\n%12s\t---+\n", jogadores[4]);
//matamata 6
printf("\n%12s\t-------+", jogadores[1]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[6]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |---\n", jogadores[9]);
printf("\t\t |");
printf("\n%12s\t-------+ |", jogadores[2]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[5]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ \n", jogadores[10]);
break;
case 12:
//matamata 6
printf("\n%12s\t-------+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[7]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |---\n", jogadores[8]);
printf("\t\t |");
printf("\n%12s\t-------+ |", jogadores[3]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[4]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ \n", jogadores[11]);
//matamata 6
printf("\n%12s\t-------+", jogadores[1]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[6]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |---\n", jogadores[9]);
printf("\t\t |");
printf("\n%12s\t-------+ |", jogadores[2]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[5]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ \n", jogadores[10]);
break;
case 13:
//matamata 7
printf("\n%12s\t-------+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[7]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |\n", jogadores[8]);
printf("\t\t |---");
printf("\n%12s\t---+ |", jogadores[3]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ | |", jogadores[12]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[4]);
printf("\n\t\t |---+");
printf("\n%12s\t---+\n", jogadores[11]);
//matamata 6
printf("\n%12s\t-------+", jogadores[1]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[6]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |---\n", jogadores[9]);
printf("\t\t |");
printf("\n%12s\t-------+ |", jogadores[2]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[5]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ \n", jogadores[10]);
break;
case 14:
//matamata 7
printf("\n%12s\t-------+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[7]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |\n", jogadores[8]);
printf("\t\t |---");
printf("\n%12s\t---+ |", jogadores[3]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ | |", jogadores[12]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[4]);
printf("\n\t\t |---+");
printf("\n%12s\t---+\n", jogadores[11]);
//matamata 7
printf("\n%12s\t-------+", jogadores[1]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[6]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |\n", jogadores[9]);
printf("\t\t |---");
printf("\n%12s\t---+ |", jogadores[2]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ | |", jogadores[13]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[5]);
printf("\n\t\t |---+");
printf("\n%12s\t---+\n", jogadores[10]);
break;
case 15:
//matamata 7
printf("\n%12s\t-------+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[7]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |\n", jogadores[8]);
printf("\t\t |---");
printf("\n%12s\t---+ |", jogadores[3]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ | |", jogadores[12]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[4]);
printf("\n\t\t |---+");
printf("\n%12s\t---+\n", jogadores[11]);
//matamata 8
printf("\n%12s\t---+", jogadores[1]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[14]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[6]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |\n", jogadores[9]);
printf("\t\t |---");
printf("\n%12s\t---+ |", jogadores[2]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ | |", jogadores[13]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[5]);
printf("\n\t\t |---+");
printf("\n%12s\t---+\n", jogadores[10]);
break;
case 16:
//matamata 8
printf("\n%12s\t---+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[14]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[7]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |\n", jogadores[9]);
printf("\t\t |---");
printf("\n%12s\t---+ |", jogadores[3]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ | |", jogadores[13]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[4]);
printf("\n\t\t |---+");
printf("\n%12s\t---+\n", jogadores[10]);
//matamata 8
printf("\n%12s\t---+", jogadores[1]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[15]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ | |", jogadores[6]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ |\n", jogadores[8]);
printf("\t\t |---");
printf("\n%12s\t---+ |", jogadores[2]);
printf("\n\t\t |---+ |");
printf("\n%12s\t---+ | |", jogadores[12]);
printf("\n\t\t |---+");
printf("\n%12s\t---+ |", jogadores[5]);
printf("\n\t\t |---+");
printf("\n%12s\t---+\n", jogadores[11]);
break;
}
}
Modelo Relacional do Banco de Dados
--Leonardo.zapola (discussão) 14h11min de 7 de julho de 2016 (BRT)