PFC 2016:Gerenciador de Tabelas Esportivas: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
 
(20 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:


*Até 5 inscritos: Rodízio, todos contra todos.
;Rodízio: Até 5 inscritos, todos contra todos:
**3 inscritos: 3 partidas
*3 inscritos: 3 partidas
**4 inscritos: 6 partidas  
*4 inscritos: 6 partidas  
**5 inscritos: 10 partidas
*5 inscritos: 10 partidas


*6 inscritos -> 2 chaves de 3 (classificam 1º e 2º de cada chave)
;2 grupos: Classificam 1º e 2º de cada chave.
*7 inscritos ->  1 chave de 4 e 1 chave de 3 (classificam 1º e 2º de cada chave)
*6 inscritos -> 2 chaves de 3  
*8 inscritos -> 2 chaves de 4 (classificam 1º e 2º de cada chave)
*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)
*9 inscritos -> 3  chaves  de 3  (classificam 1º e 2º de cada chave)
*:O 1º dos grupos 1 e 2 entram como avulsos na semifinal.
*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)
*12 inscritos -> 4 chaves de 3 (classificam o 1º e 2º de cada chave)
 
*13 inscritos -> 1 chave de 4 e 3 chaves de 3 (classificam 1º e 2º de cada chave)
;4 grupos: Classificam 1º e 2º de cada chave.
*14 inscritos -> 2 chaves de 4 e 2 chaves de 3 (classificam 1º e 2º de cada chave)
*12 inscritos -> 4 chaves de 3  
*15 inscritos -> 3 chaves de 4 e 1 chave de 3 (classificam 1º e 2º de cada chave)
*13 inscritos -> 1 chave de 4 e 3 chaves de 3  
*16 inscritos -> 4 chaves de 4 (classificam 1º e 2º de cada chave)
*14 inscritos -> 2 chaves de 4 e 2 chaves de 3  
*17 inscritos -> 3 chaves de 4 e 1 chave de 5 (classificam 1º e 2º de cada chave)
*15 inscritos -> 3 chaves de 4 e 1 chave de 3  
*18 inscritos -> 6 chaves de 3 (classificam 1º e 2º de cada chave)
*16 inscritos -> 4 chaves de 4  
*:O 1º dos grupos 1, 2, 3 e 4 entram como avulsos na semifinal.
*17 inscritos -> 3 chaves de 4 e 1 chave de 5  
*19 inscritos -> 5 chaves de 3 e 1 chave de 4(classificam 1º e 2º de cada chave)
 
*20 inscritos -> 4 chaves de 3 e 2 chave de 4(classificam 1º e 2º de cada chave)
;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


;[[Mídia:TabelasPFC.ods|Tabelas para jogos em função dos inscritos]]
;[[Mídia:TabelasPFC.ods|Tabelas para jogos em função dos inscritos]]


===Modelo Relacional do Banco de Dados===
===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);
}


[[Arquivo:workbench.png|700px]]
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]);
}


--[[Usuário:Leonardo.zapola|Leonardo.zapola]] ([[Usuário Discussão:Leonardo.zapola|discussão]]) 14h11min de 7 de julho de 2016 (BRT)
void matamata (int n, char jogadores[32][20]);


==Histórico de reuniões==
void embaralhar(char vetor[32][20], int tamVetor)
===04/abr===
{
Discussão sobre os requisitos funcionais do sistema, que deve gerar tabelas esportivas para esportes individuais e coletivos.
  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);
  }
}


;Sistemas para pesquisar: Pesquisar como são organizadas tabelas das seguintes copetições:
int calExtra (int *mod)
*Torneios individuais de Tênis ATP
{
*Copa do Mundo de Futebol
  if (*mod > 0)
*Torneios de Xadrez
  {
    *mod = *mod - 1;
    return (1);
  }
  return (0);
}


===12/abr===
void copa (int g, int n, char jogadores[32][20])
Análise dos requisitos.
{
  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); 
}


===19 e 26/abr===
void main ()
Construção de documento com esqueleto do PFC.
{
  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);
  }
}


===03/mai===
void matamata (int n, char jogadores[32][20])
Definição da organização do banco de dados, com auxílio da Prof. Ana Paula.
{
  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;


===10/mai===
  }
Conclusão do diagrama entidade relacionamento.
}


===02/jun===
</syntaxhighlight>
Modificações no diagrama entidade relacionamento conforme sugestões da prof. Ana Paula.


===07/jun===
===Modelo Relacional do Banco de Dados===
Desenvolvimento do projeto do banco de dados.


===16/jun===
[[Arquivo:workbench.png|700px]]
Sugestões para os textos com fundamentação teórica.
Complementação do diagrama de entidade relacionamento.


===23/jun===
--[[Usuário:Leonardo.zapola|Leonardo.zapola]] ([[Usuário Discussão:Leonardo.zapola|discussão]]) 14h11min de 7 de julho de 2016 (BRT)
Discussão sobre complementação dos textos de fundamentação teórica.


----
----


[[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
  • Email
  • 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
Tabelas para jogos em função dos inscritos

Algoritmo Competições

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

#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)