All submissions | Best solutions | Back to list |
ALGOUPT26 - Campeonatos de futebol |
Em todos campeonatos de futebol, depois de uma fase de grupos, um número par de equipes disputa a Fase Final, composta de jogos eliminatórios. A figura abaixo mostra a tabela de jogos de uma Fase Final com 16 times:
Por exemplo, na tabela a seguir, as 16 equipes finalistas são representadas por letras maiúsculas (de A a P), e os jogos são numerados de 1 a 15. Por exemplo, o jogo 3 é entre as equipes identificadas por E e F; o vencedor desse jogo enfrentará o vencedor do jogo 4, e o perdedor será eliminado. A equipe que vencer os todos os jogos da Fase Final será a campeã (por exemplo, para a equipe K ser campeã ela deve vencer os jogos 6, 11, 14 e 15.
Saiba que uma partida nunca termina em empate. Um time sempre termina com mais gols que outro, seja por prorrogação ou pênaltis.
Faça um programa que simule a Fase Final de um campeonato.
Sugere-se que, para facilitar seu desenvolvimento, siga os passos a seguir:
- Crie matrizes para representar os dados dos times. Para cada time é preciso guardar:
char caracter; //caracter que representa o time. A caracter vai de A a P
char nome[30]; //nome do time (país). Por exemplo: BRASIL.
int continente; //indica o numero do continente do time
int qtde_partidas; //quantidade de partidas realizadas na Fase Final. De 1 a 4.
int gols_a_favor; //todos os gols realizados pela equipe na Fase Final.
int gols_contra; //todos os gols que a equipe sofreu na Fase Final.
int saldo_gols; // gols a favor – gols contra na Fase Final.
- Crie uma função que receba um vetor que represente os times do campeonato e o tamanho do vetor. Esta função deverá ler os dados do time (caracter, nome) e armazenar os valores no vetor. E também inicializar os campos quantidade de partidas e referentes aos gols.
void ReceberTimes(char caracterTimes[], char nomeTimes[][], int gols[][4], int qtde_times);
- Crie uma função receba um vetor que represente as partidas do campeonato e o tamanho do vetor. Esta função deverá ler os dados da partida e atualizar os dados do time. Por exemplo, após a partida de código 1, você deverá localizar os times A e B no vetor de times e atualizar os campos: qtde_partidas, gols_a_favor, gols_contra, saldo_gols. Os dados da partida em si não precisam ser armazenados.
void ReceberPartidas(char caracterTimes[], char nomeTimes[][], int gols[][4], int qtde_times);
Ao receber os dados da partida, você deverá atualizar os dados do time. Por exemplo, após a partida de código 1, você deverá localizar os times A e B no vetor de times e atualizar os campos: qtde_partidas, gols_a_favor, gols_contra, saldo_gols.
- Crie uma função que receba um vetor que represente os times do campeonato e o tamanho do vetor. Esta função deverá retornar o time com maior saldo de gols.
time MelhorSaldoGols(char caracterTimes[], char nomeTimes[][], int gols[][4], int qtde_times);
- Crie uma função que receba um vetor que represente os times do campeonato e o tamanho do vetor. Esta função deverá retornar o time com pior saldo de gols.
time PiorSaldoGols(char caracterTimes[], char nomeTimes[][], int gols[][4], int qtde_times);
- Crie uma função que receba os times e seus respectivos tamanhos; e um continente. Esta função deverá retornar o time melhor classificado do continente, ou seja, quem disputou mais partidas no campeonato. Caso haja empate, os critérios de desempate são: saldo de gols; e gols a favor (critérios válidos para qualquer caso de empate do programa)
time MelhorClassificadoContinente(char caracterTimes[], char nomeTimes[][], int gols[][4], int qtde_times, int continente);
- Ao final, a saída deverá apresentar o caracter correspondente aos: time com melhor saldo de gols, time com pior saldo de gols, time melhor classificado de cada continente (sempre haverá times de todos continentes)
Entrada:
Inicialmente é informado o número n de times (múltiplo de 8 entre 8 e 40), seguido das informações de cada time: caracter que o representa, nome (até 30 caracteres), número do continente do time(1: AMERICA, 2: EUROPA, 3: AFRICA, 4: ASIA, 5: OCEANIA). Segue-se o número m de partidas seguido dos dados de m partidas, a saber: código da partida (1 e 40), caracter do time 1, caracter do time 2, número de gols do time 1, número de gols do time 2
Saida:
Primeira linha apresenta a caracter correspondente ao time com melhor saldo de gols.
A linha seguinte, apresenta a caracter correspondente ao time com pior saldo de gols.
As 5 linhas seguintes apresentam o número de um continente (1 a 5) seguido da a caracter correspondente ao time melhor classificado de cada continente
Exemplo completo de entrada |
Exemplo completo de saída |
8 A BRASIL 1 B FRANCA 2 C JAPAO 4 D SENEGAL 3 E AUSTRALIA 5 F ARGENTINA 1 G ALEMANHA 2 H INGLATERRA 2 7 1 A B 3 1 2 C D 2 3 3 E F 7 1 4 G H 0 1 5 A D 2 3 6 E H 3 1 7 D E 1 2 |
E F 1:A 2:H 3:D 4:C 5:E |
Added by: | IFTM_Maratona |
Date: | 2024-06-27 |
Time limit: | 1s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | C |