PFC 2016:Gerenciador de Tabelas Esportivas: mudanças entre as edições
De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Linha 99: | Linha 99: | ||
#include <stdio.h> | #include <stdio.h> | ||
#include <string.h> | #include <string.h> | ||
#include <time.h> | |||
int entraJogador (char *novoJogador) | int entraJogador (char *novoJogador) | ||
Linha 110: | Linha 111: | ||
} | } | ||
void rodizio (int n, char | void rodizio (int n, char jogadores[32][20]) | ||
{ | { | ||
int c = 0; | int c = 0; | ||
int i, j; | int i, j; | ||
printf ("\nPARTIDAS: \n"); | printf ("\nPARTIDAS DO RODÍZIO: \n"); | ||
for (i=0;i<n;i++) | for (i=0;i<n;i++) | ||
for (j=i+1;j<n;j++) | for (j=i+1;j<n;j++) | ||
printf (" %2d: %10s x %-10s\n", ++c, | printf (" %2d: %10s x %-10s\n", ++c, jogadores[i], jogadores[j]); | ||
} | } | ||
void matamata (int n, char | void matamata (int n, char jogadores[32][20]) | ||
{ | { | ||
printf ("\nPARTIDAS ELIMINATÓRIASS: \n"); | |||
switch (n) | switch (n) | ||
{ | { | ||
case 3: | case 3: | ||
printf("\n%10s\t-------+", jogadores[0]); | |||
printf("\n%10s\t-------+", | |||
printf("\n\t\t |---"); | printf("\n\t\t |---"); | ||
printf("\n%10s\t---+ |", | printf("\n%10s\t---+ |", jogadores[1]); | ||
printf("\n\t\t |---+"); | printf("\n\t\t |---+"); | ||
printf("\n%10s\t---+\n", | printf("\n%10s\t---+\n", jogadores[2]); | ||
break; | break; | ||
case 4: | case 4: | ||
printf("\n%10s\t---+", jogadores[0]); | |||
printf("\n%10s\t---+", | |||
printf("\n\t\t |---+"); | printf("\n\t\t |---+"); | ||
printf("\n%10s\t---+ |", | printf("\n%10s\t---+ |", jogadores[3]); | ||
printf("\n\t\t |---"); | printf("\n\t\t |---"); | ||
printf("\n%10s\t---+ |", | printf("\n%10s\t---+ |", jogadores[1]); | ||
printf("\n\t\t |---+"); | printf("\n\t\t |---+"); | ||
printf("\n%10s\t---+\n", | printf("\n%10s\t---+\n", jogadores[2]); | ||
break; | break; | ||
case 5: | case 5: | ||
printf("\n%10s\t-------+", jogadores[0]); | |||
printf("\n%10s\t-------+", | |||
printf("\n\t\t |---+"); | printf("\n\t\t |---+"); | ||
printf("\n%10s\t---+ | |", | printf("\n%10s\t---+ | |", jogadores[3]); | ||
printf("\n\t\t |---+ |"); | printf("\n\t\t |---+ |"); | ||
printf("\n%10s\t---+ |---\n", | printf("\n%10s\t---+ |---\n", jogadores[4]); | ||
printf("\t\t |"); | printf("\t\t |"); | ||
printf("\n%10s\t---+ |", | printf("\n%10s\t---+ |", jogadores[1]); | ||
printf("\n\t\t |-------+"); | printf("\n\t\t |-------+"); | ||
printf("\n%10s\t---+\n", | printf("\n%10s\t---+\n", jogadores[2]); | ||
break; | break; | ||
case 6: | case 6: | ||
printf("\n%10s\t-------+", jogadores[0]); | |||
printf("\n%10s\t-------+", | |||
printf("\n\t\t |---+"); | printf("\n\t\t |---+"); | ||
printf("\n%10s\t---+ | |", | printf("\n%10s\t---+ | |", jogadores[3]); | ||
printf("\n\t\t |---+ |"); | printf("\n\t\t |---+ |"); | ||
printf("\n%10s\t---+ |---\n", | printf("\n%10s\t---+ |---\n", jogadores[4]); | ||
printf("\t\t |"); | printf("\t\t |"); | ||
printf("\n%10s\t-------+ |", | printf("\n%10s\t-------+ |", jogadores[1]); | ||
printf("\n\t\t |---+"); | printf("\n\t\t |---+"); | ||
printf("\n%10s\t---+ |", | printf("\n%10s\t---+ |", jogadores[2]); | ||
printf("\n\t\t |---+"); | printf("\n\t\t |---+"); | ||
printf("\n%10s\t---+ \n", | printf("\n%10s\t---+ \n", jogadores[5]); | ||
break; | break; | ||
case 7: | case 7: | ||
printf("\n%10s\t-------+", jogadores[0]); | |||
printf("\n%10s\t-------+", | |||
printf("\n\t\t |---+"); | printf("\n\t\t |---+"); | ||
printf("\n%10s\t---+ | |", | printf("\n%10s\t---+ | |", jogadores[3]); | ||
printf("\n\t\t |---+ |"); | printf("\n\t\t |---+ |"); | ||
printf("\n%10s\t---+ |\n", | printf("\n%10s\t---+ |\n", jogadores[4]); | ||
printf("\t\t |---"); | printf("\t\t |---"); | ||
printf("\n%10s\t---+ |", | printf("\n%10s\t---+ |", jogadores[1]); | ||
printf("\n\t\t |---+ |"); | printf("\n\t\t |---+ |"); | ||
printf("\n%10s\t---+ | |", | printf("\n%10s\t---+ | |", jogadores[5]); | ||
printf("\n\t\t |---+"); | printf("\n\t\t |---+"); | ||
printf("\n%10s\t---+ |", | printf("\n%10s\t---+ |", jogadores[2]); | ||
printf("\n\t\t |---+"); | printf("\n\t\t |---+"); | ||
printf("\n%10s\t---+\n", | printf("\n%10s\t---+\n", jogadores[5]); | ||
break; | break; | ||
case 8: | case 8: | ||
printf("\n%10s\t---+", jogadores[0]); | |||
printf("\n%10s\t---+", | |||
printf("\n\t\t |---+"); | printf("\n\t\t |---+"); | ||
printf("\n%10s\t---+ |", | printf("\n%10s\t---+ |", jogadores[7]); | ||
printf("\n\t\t |---+"); | printf("\n\t\t |---+"); | ||
printf("\n%10s\t---+ | |", | printf("\n%10s\t---+ | |", jogadores[3]); | ||
printf("\n\t\t |---+ |"); | printf("\n\t\t |---+ |"); | ||
printf("\n%10s\t---+ |\n", | printf("\n%10s\t---+ |\n", jogadores[4]); | ||
printf("\t\t |---"); | printf("\t\t |---"); | ||
printf("\n%10s\t---+ |", | printf("\n%10s\t---+ |", jogadores[1]); | ||
printf("\n\t\t |---+ |"); | printf("\n\t\t |---+ |"); | ||
printf("\n%10s\t---+ | |", | printf("\n%10s\t---+ | |", jogadores[6]); | ||
printf("\n\t\t |---+"); | printf("\n\t\t |---+"); | ||
printf("\n%10s\t---+ |", | printf("\n%10s\t---+ |", jogadores[2]); | ||
printf("\n\t\t |---+"); | printf("\n\t\t |---+"); | ||
printf("\n%10s\t---+\n", | printf("\n%10s\t---+\n", jogadores[5]); | ||
break; | break; | ||
} | } | ||
} | } | ||
void | void embaralhar(char vetor[32][20], int tamVetor) | ||
{ | { | ||
char temp[20]; | |||
srand(time(NULL)); | |||
for (int i = 0; i < tamVetor; i++) | |||
{ | |||
int r = rand() %tamVetor; | |||
strcpy(temp, vetor[i]); | |||
strcpy(vetor[i], vetor[r]); | |||
strcpy(vetor[r], temp); | |||
} | |||
} | |||
void copa (int n, char jogadores[32][20]) | |||
{ | |||
char chaves[8][32][20]; | |||
char finais[32][20] = {"1o Chave 1", "1o Chave 2", "2o Chave 1", "2o Chave 2"}; | |||
int i; | |||
switch (n) | switch (n) | ||
{ | { | ||
case 6: | case 6: | ||
printf("\nDUAS CHAVES -> TRÊS JOGADORES CADA\n"); | printf("\nDUAS CHAVES -> TRÊS JOGADORES CADA\n"); | ||
strcpy(chaves[0][0], jogadores[0]); //Cabeça de chave 1 | |||
strcpy(chaves[1][0], jogadores[1]); //Cabeça de chave 2 | |||
printf("\nCabeça de Chave %d: %10s", 1, chaves[0][0]); | |||
printf("\nCabeça de Chave %d: %10s\n", 2, chaves[1][0]); | |||
for (i = 0; i < n - 2; i++) //Retira cabeças de chave | |||
strcpy(jogadores[i], jogadores[i+2]); | |||
embaralhar(jogadores, n - 2); //Embaralha restantes | |||
for (i = 0; i < (n - 2)/2; i++) | |||
strcpy(chaves[0][i+1], jogadores[i]); | |||
for (i = 0; i < (n - 2)/2; i++) | |||
strcpy(chaves[1][i+1], jogadores[i+(n - 2)/2]); | |||
printf("\nChave %d\n", 1); | |||
for (i = 0; i < n / 2; i++) | |||
printf(" %10s\n", chaves[0][i]); | |||
rodizio (n / 2, chaves[0]); | |||
printf("\nChave %d\n", 2); | |||
for (i = 0; i < n / 2; i++) | |||
printf(" %10s\n", chaves[1][i]); | |||
rodizio (n / 2, chaves[1]); | |||
matamata(4, finais); | |||
break; | break; | ||
case 7: | case 7: | ||
Linha 225: | Linha 257: | ||
int tam; | int tam; | ||
char novoJogador[20]; | char novoJogador[20]; | ||
char | char jogadores[32][20]; | ||
int n = 0; //número de jogadores cadastrados | int n = 0; //número de jogadores cadastrados | ||
int i; | int i; | ||
Linha 236: | Linha 268: | ||
if (tam > 0) | if (tam > 0) | ||
{ | { | ||
strcpy( | strcpy(jogadores[n], novoJogador); | ||
n++; | n++; | ||
printf ("n: %d\n", n); | printf ("n: %d\n", n); | ||
Linha 243: | Linha 275: | ||
printf ("\nJOGADORES CADASTRADOS:\n"); | printf ("\nJOGADORES CADASTRADOS:\n"); | ||
for (i=0; i<n; i++) | for (i=0; i<n; i++) | ||
printf ("Jogador %2d: %10s\n", i + 1, | printf ("Jogador %2d: %10s\n", i + 1, jogadores[i]); | ||
if (n <= 2) | if (n <= 2) | ||
{ | { | ||
printf ("\n"); | printf ("\n"); | ||
rodizio (n, | rodizio (n, jogadores); | ||
} | } | ||
if (n >= 3 && n <= 5) | if (n >= 3 && n <= 5) | ||
Linha 257: | Linha 289: | ||
resposta = getchar(); | resposta = getchar(); | ||
if (resposta == '0') | if (resposta == '0') | ||
rodizio (n, | rodizio (n, jogadores); | ||
if (resposta == '1') | if (resposta == '1') | ||
matamata(n, | matamata(n, jogadores); | ||
} | } | ||
if (n >= 6 && n <= 8) | if (n >= 6 && n <= 8) | ||
Linha 266: | Linha 298: | ||
printf (" (0) Rodízio simples\n"); | printf (" (0) Rodízio simples\n"); | ||
printf (" (1) Eliminatória simples\n"); | printf (" (1) Eliminatória simples\n"); | ||
printf (" (2) Copa\n"); | printf (" (2) Copa: Fase de Grupos + Fase Final\n"); | ||
resposta = getchar(); | resposta = getchar(); | ||
if (resposta == '0') | if (resposta == '0') | ||
rodizio (n, | rodizio (n, jogadores); | ||
if (resposta == '1') | if (resposta == '1') | ||
matamata(n, | matamata(n, jogadores); | ||
if (resposta == '2') | if (resposta == '2') | ||
copa(n, | copa(n, jogadores); | ||
} | } | ||
} | } |
Edição das 12h25min de 1 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 <string.h>
#include <time.h>
int entraJogador (char *novoJogador)
{
int tam;
printf ("\n Entre com novo JOGADOR ou tecle Enter para finalizar:\n");
gets(novoJogador);
tam = strlen(novoJogador);
printf ("Jogador: %s\n", novoJogador);
return (tam);
}
void rodizio (int n, char jogadores[32][20])
{
int c = 0;
int i, j;
printf ("\nPARTIDAS DO RODÍZIO: \n");
for (i=0;i<n;i++)
for (j=i+1;j<n;j++)
printf (" %2d: %10s x %-10s\n", ++c, jogadores[i], jogadores[j]);
}
void matamata (int n, char jogadores[32][20])
{
printf ("\nPARTIDAS ELIMINATÓRIASS: \n");
switch (n)
{
case 3:
printf("\n%10s\t-------+", jogadores[0]);
printf("\n\t\t |---");
printf("\n%10s\t---+ |", jogadores[1]);
printf("\n\t\t |---+");
printf("\n%10s\t---+\n", jogadores[2]);
break;
case 4:
printf("\n%10s\t---+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%10s\t---+ |", jogadores[3]);
printf("\n\t\t |---");
printf("\n%10s\t---+ |", jogadores[1]);
printf("\n\t\t |---+");
printf("\n%10s\t---+\n", jogadores[2]);
break;
case 5:
printf("\n%10s\t-------+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%10s\t---+ | |", jogadores[3]);
printf("\n\t\t |---+ |");
printf("\n%10s\t---+ |---\n", jogadores[4]);
printf("\t\t |");
printf("\n%10s\t---+ |", jogadores[1]);
printf("\n\t\t |-------+");
printf("\n%10s\t---+\n", jogadores[2]);
break;
case 6:
printf("\n%10s\t-------+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%10s\t---+ | |", jogadores[3]);
printf("\n\t\t |---+ |");
printf("\n%10s\t---+ |---\n", jogadores[4]);
printf("\t\t |");
printf("\n%10s\t-------+ |", jogadores[1]);
printf("\n\t\t |---+");
printf("\n%10s\t---+ |", jogadores[2]);
printf("\n\t\t |---+");
printf("\n%10s\t---+ \n", jogadores[5]);
break;
case 7:
printf("\n%10s\t-------+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%10s\t---+ | |", jogadores[3]);
printf("\n\t\t |---+ |");
printf("\n%10s\t---+ |\n", jogadores[4]);
printf("\t\t |---");
printf("\n%10s\t---+ |", jogadores[1]);
printf("\n\t\t |---+ |");
printf("\n%10s\t---+ | |", jogadores[5]);
printf("\n\t\t |---+");
printf("\n%10s\t---+ |", jogadores[2]);
printf("\n\t\t |---+");
printf("\n%10s\t---+\n", jogadores[5]);
break;
case 8:
printf("\n%10s\t---+", jogadores[0]);
printf("\n\t\t |---+");
printf("\n%10s\t---+ |", jogadores[7]);
printf("\n\t\t |---+");
printf("\n%10s\t---+ | |", jogadores[3]);
printf("\n\t\t |---+ |");
printf("\n%10s\t---+ |\n", jogadores[4]);
printf("\t\t |---");
printf("\n%10s\t---+ |", jogadores[1]);
printf("\n\t\t |---+ |");
printf("\n%10s\t---+ | |", jogadores[6]);
printf("\n\t\t |---+");
printf("\n%10s\t---+ |", jogadores[2]);
printf("\n\t\t |---+");
printf("\n%10s\t---+\n", jogadores[5]);
break;
}
}
void embaralhar(char vetor[32][20], int tamVetor)
{
char temp[20];
srand(time(NULL));
for (int i = 0; i < tamVetor; i++)
{
int r = rand() %tamVetor;
strcpy(temp, vetor[i]);
strcpy(vetor[i], vetor[r]);
strcpy(vetor[r], temp);
}
}
void copa (int n, char jogadores[32][20])
{
char chaves[8][32][20];
char finais[32][20] = {"1o Chave 1", "1o Chave 2", "2o Chave 1", "2o Chave 2"};
int i;
switch (n)
{
case 6:
printf("\nDUAS CHAVES -> TRÊS JOGADORES CADA\n");
strcpy(chaves[0][0], jogadores[0]); //Cabeça de chave 1
strcpy(chaves[1][0], jogadores[1]); //Cabeça de chave 2
printf("\nCabeça de Chave %d: %10s", 1, chaves[0][0]);
printf("\nCabeça de Chave %d: %10s\n", 2, chaves[1][0]);
for (i = 0; i < n - 2; i++) //Retira cabeças de chave
strcpy(jogadores[i], jogadores[i+2]);
embaralhar(jogadores, n - 2); //Embaralha restantes
for (i = 0; i < (n - 2)/2; i++)
strcpy(chaves[0][i+1], jogadores[i]);
for (i = 0; i < (n - 2)/2; i++)
strcpy(chaves[1][i+1], jogadores[i+(n - 2)/2]);
printf("\nChave %d\n", 1);
for (i = 0; i < n / 2; i++)
printf(" %10s\n", chaves[0][i]);
rodizio (n / 2, chaves[0]);
printf("\nChave %d\n", 2);
for (i = 0; i < n / 2; i++)
printf(" %10s\n", chaves[1][i]);
rodizio (n / 2, chaves[1]);
matamata(4, finais);
break;
case 7:
printf("\nDUAS CHAVES -> UMA COM TRÊS E OUTRA COM QUATRO JOGADORES\n");
break;
case 8:
printf("\nDUAS CHAVES -> QUATRO JOGADORES CADA\n");
break;
}
}
void main ()
{
int tam;
char novoJogador[20];
char jogadores[32][20];
int n = 0; //número de jogadores cadastrados
int i;
char resposta;
printf ("\nCADASTRO DE JOGADORES\n");
printf ("\nCadastre jogadores de acordo com o RANKING ou CABEÇAS DE CHAVE.\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 ("Jogador %2d: %10s\n", i + 1, jogadores[i]);
if (n <= 2)
{
printf ("\n");
rodizio (n, jogadores);
}
if (n >= 3 && n <= 5)
{
printf ("\nESCOHA FORMATO DA COMPETIÇÃO: \n");
printf (" (0) Rodízio simples\n");
printf (" (1) Eliminatória simples\n");
resposta = getchar();
if (resposta == '0')
rodizio (n, jogadores);
if (resposta == '1')
matamata(n, jogadores);
}
if (n >= 6 && n <= 8)
{
printf ("\nESCOHA FORMATO DA COMPETIÇÃO: \n");
printf (" (0) Rodízio simples\n");
printf (" (1) Eliminatória simples\n");
printf (" (2) Copa: Fase de Grupos + Fase Final\n");
resposta = getchar();
if (resposta == '0')
rodizio (n, jogadores);
if (resposta == '1')
matamata(n, jogadores);
if (resposta == '2')
copa(n, jogadores);
}
}
Modelo Relacional do Banco de Dados
--Leonardo.zapola (discussão) 14h11min de 7 de julho de 2016 (BRT)