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 vetorJogador[32][20])
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, vetorJogador[i], vetorJogador[j]);
       printf (" %2d: %10s x %-10s\n", ++c, jogadores[i], jogadores[j]);
}
}


void matamata (int n, char vetorJogador[32][20])
void matamata (int n, char jogadores[32][20])
{
{
  printf ("\nPARTIDAS ELIMINATÓRIASS: \n");
   switch (n)
   switch (n)
   {
   {
     case 3:
     case 3:
      printf ("\nPARTIDAS ELIMINATÓRIASS: \n");
       printf("\n%10s\t-------+", jogadores[0]);
       printf("\n%10s\t-------+", vetorJogador[0]);
       printf("\n\t\t      |---");
       printf("\n\t\t      |---");
       printf("\n%10s\t---+  |", vetorJogador[1]);
       printf("\n%10s\t---+  |", jogadores[1]);
       printf("\n\t\t  |---+");
       printf("\n\t\t  |---+");
       printf("\n%10s\t---+\n", vetorJogador[2]);
       printf("\n%10s\t---+\n", jogadores[2]);
       break;
       break;
     case 4:
     case 4:
      printf ("\nPARTIDAS ELIMINATÓRIAS: \n");
       printf("\n%10s\t---+", jogadores[0]);
       printf("\n%10s\t---+", vetorJogador[0]);
       printf("\n\t\t  |---+");
       printf("\n\t\t  |---+");
       printf("\n%10s\t---+  |", vetorJogador[3]);
       printf("\n%10s\t---+  |", jogadores[3]);
       printf("\n\t\t      |---");
       printf("\n\t\t      |---");
       printf("\n%10s\t---+  |", vetorJogador[1]);
       printf("\n%10s\t---+  |", jogadores[1]);
       printf("\n\t\t  |---+");
       printf("\n\t\t  |---+");
       printf("\n%10s\t---+\n", vetorJogador[2]);
       printf("\n%10s\t---+\n", jogadores[2]);
       break;
       break;
     case 5:
     case 5:
      printf ("\nPARTIDAS ELIMINATÓRIAS: \n");
       printf("\n%10s\t-------+", jogadores[0]);
       printf("\n%10s\t-------+", vetorJogador[0]);
       printf("\n\t\t      |---+");
       printf("\n\t\t      |---+");
       printf("\n%10s\t---+  |  |", vetorJogador[3]);
       printf("\n%10s\t---+  |  |", jogadores[3]);
       printf("\n\t\t  |---+  |");
       printf("\n\t\t  |---+  |");
       printf("\n%10s\t---+      |---\n", vetorJogador[4]);
       printf("\n%10s\t---+      |---\n", jogadores[4]);
       printf("\t\t          |");   
       printf("\t\t          |");   
       printf("\n%10s\t---+      |", vetorJogador[1]);
       printf("\n%10s\t---+      |", jogadores[1]);
       printf("\n\t\t  |-------+");
       printf("\n\t\t  |-------+");
       printf("\n%10s\t---+\n", vetorJogador[2]);
       printf("\n%10s\t---+\n", jogadores[2]);
       break;
       break;
     case 6:
     case 6:
      printf ("\nPARTIDAS ELIMINATÓRIAS: \n");
       printf("\n%10s\t-------+", jogadores[0]);
       printf("\n%10s\t-------+", vetorJogador[0]);
       printf("\n\t\t      |---+");
       printf("\n\t\t      |---+");
       printf("\n%10s\t---+  |  |", vetorJogador[3]);
       printf("\n%10s\t---+  |  |", jogadores[3]);
       printf("\n\t\t  |---+  |");
       printf("\n\t\t  |---+  |");
       printf("\n%10s\t---+      |---\n", vetorJogador[4]);
       printf("\n%10s\t---+      |---\n", jogadores[4]);
       printf("\t\t          |");
       printf("\t\t          |");
       printf("\n%10s\t-------+  |", vetorJogador[1]);
       printf("\n%10s\t-------+  |", jogadores[1]);
       printf("\n\t\t      |---+");
       printf("\n\t\t      |---+");
       printf("\n%10s\t---+  |", vetorJogador[2]);
       printf("\n%10s\t---+  |", jogadores[2]);
       printf("\n\t\t  |---+");
       printf("\n\t\t  |---+");
       printf("\n%10s\t---+      \n", vetorJogador[5]);
       printf("\n%10s\t---+      \n", jogadores[5]);
       break;
       break;
     case 7:
     case 7:
      printf ("\nPARTIDAS ELIMINATÓRIAS: \n");
       printf("\n%10s\t-------+", jogadores[0]);
       printf("\n%10s\t-------+", vetorJogador[0]);
       printf("\n\t\t      |---+");
       printf("\n\t\t      |---+");
       printf("\n%10s\t---+  |  |", vetorJogador[3]);
       printf("\n%10s\t---+  |  |", jogadores[3]);
       printf("\n\t\t  |---+  |");
       printf("\n\t\t  |---+  |");
       printf("\n%10s\t---+      |\n", vetorJogador[4]);
       printf("\n%10s\t---+      |\n", jogadores[4]);
       printf("\t\t          |---");
       printf("\t\t          |---");
       printf("\n%10s\t---+      |", vetorJogador[1]);
       printf("\n%10s\t---+      |", jogadores[1]);
       printf("\n\t\t  |---+  |");
       printf("\n\t\t  |---+  |");
       printf("\n%10s\t---+  |  |", vetorJogador[5]);
       printf("\n%10s\t---+  |  |", jogadores[5]);
       printf("\n\t\t      |---+");
       printf("\n\t\t      |---+");
       printf("\n%10s\t---+  |", vetorJogador[2]);
       printf("\n%10s\t---+  |", jogadores[2]);
       printf("\n\t\t  |---+");
       printf("\n\t\t  |---+");
       printf("\n%10s\t---+\n", vetorJogador[5]);
       printf("\n%10s\t---+\n", jogadores[5]);
       break;
       break;
     case 8:
     case 8:
      printf ("\nPARTIDAS ELIMINATÓRIAS: \n");
       printf("\n%10s\t---+", jogadores[0]);
       printf("\n%10s\t---+", vetorJogador[0]);
       printf("\n\t\t  |---+");
       printf("\n\t\t  |---+");
       printf("\n%10s\t---+  |", vetorJogador[7]);
       printf("\n%10s\t---+  |", jogadores[7]);
       printf("\n\t\t      |---+");
       printf("\n\t\t      |---+");
       printf("\n%10s\t---+  |  |", vetorJogador[3]);
       printf("\n%10s\t---+  |  |", jogadores[3]);
       printf("\n\t\t  |---+  |");
       printf("\n\t\t  |---+  |");
       printf("\n%10s\t---+      |\n", vetorJogador[4]);
       printf("\n%10s\t---+      |\n", jogadores[4]);
       printf("\t\t          |---");
       printf("\t\t          |---");
       printf("\n%10s\t---+      |", vetorJogador[1]);
       printf("\n%10s\t---+      |", jogadores[1]);
       printf("\n\t\t  |---+  |");
       printf("\n\t\t  |---+  |");
       printf("\n%10s\t---+  |  |", vetorJogador[6]);
       printf("\n%10s\t---+  |  |", jogadores[6]);
       printf("\n\t\t      |---+");
       printf("\n\t\t      |---+");
       printf("\n%10s\t---+  |", vetorJogador[2]);
       printf("\n%10s\t---+  |", jogadores[2]);
       printf("\n\t\t  |---+");
       printf("\n\t\t  |---+");
       printf("\n%10s\t---+\n", vetorJogador[5]);
       printf("\n%10s\t---+\n", jogadores[5]);
       break;
       break;
   }
   }
}
}


void copa (int n, char vetorJogador[32][20])
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 vetorJogador[32][20];
   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(vetorJogador[n], novoJogador);
       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, vetorJogador[i]);
     printf ("Jogador %2d: %10s\n", i + 1, jogadores[i]);


   if (n <= 2)
   if (n <= 2)
   {
   {
     printf ("\n");
     printf ("\n");
     rodizio (n, vetorJogador);
     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, vetorJogador);
       rodizio (n, jogadores);
     if (resposta == '1')
     if (resposta == '1')
       matamata(n, vetorJogador);
       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, vetorJogador);
       rodizio (n, jogadores);
     if (resposta == '1')
     if (resposta == '1')
       matamata(n, vetorJogador);
       matamata(n, jogadores);
     if (resposta == '2')
     if (resposta == '2')
       copa(n, vetorJogador);
       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
  • 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 <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)