Ir ao conteúdo

Posts recomendados

Postado

Olá, pessoal!

Tudo bem? Então, o meu professor passou o seguinte problema:

Considere que sua empresa seja contratada pela Superliga de Vôlei Nacional para resolver o problema da divulgação dos resultados das competições que ela mantém.

Sua empresa deve desenvolver um algoritmo que, dados um arquivo de entrada (LIDO SOMENTE UMA VEZ PELO SEU PROGRAMA), com todos os jogos de algum turno da Superliga, e o número de times que devem ser classificados para a próxima fase (N), retorne os N times da próxima fase em um arquivo de saída bem especificado. Sabe-se, analisando as regulamentações da CBV que, em caso de:

 VITÓRIA ou por 3x0, ou por 3x1 – o vencedor ganha três pontos;
 DERROTA ou por 0x3, ou por 1x3 – o perdedor não ganha nenhum ponto;
 VITÓRIA por 3x2 – o vencedor ganha dois pontos; e
 DERROTA por 2x3 – o perdedor ganha um ponto.

Se times estiverem empatados em pontuação, o critério de desempate é o número de vitórias. Se eles também estiverem empatados em número de vitórias, o critério de desempate será o saldo de pontos em sets, isto é, a diferença entre os todos os pontos feitos por uma quipe e todos os pontos que os outros times fizeram nela. O seu programa deve retornar, no arquivo de saída “out­” acrescido do nome de arquivo de entrada, os N times da próxima fase.

 

Por exemplo, dados os resultados de um turno deste ano (Liga 2015-2016), cujo o nome é result­fase2­2016.txt:

 

VOLEI NESTLE vs REXONA­-ADES/3­-2/25­-22/14­-25/26-­24/19­-25/15-­10
DENTIL­-PRAIA CLUBE vs CAMPONESA-MINAS/3­-2/22-­25/25­-15/21­-25/25-­22/15-­12
REXONA­ADES vs VOLEI NESTLE/3-­1/21-­25/25­-22/25­-23/25­-16
CAMPONESA-­MINAS vs DENTIL-­PRAIA CLUBE/3-­1/21-­25/25­-17 25-­22/ 25-­22
REXONA­ADES vs VOLEI NESTLE/3-­0/25­-20/25­-23/25-­16
DENTIL-­PRAIA CLUBE vs CAMPONESA-­MINAS/3­-0/25-­21/25­-18/25-­22

 

O resultado deverá ser:

REXONA­-ADES
DENTIL ­PRAIA CLUBE

 

Eu pensei em fazer o seguinte: eu leio a linha do arquivo, separo a parte das equipes e dos pontos e tento colocar isso dentro de uma matriz, por exemplo:

Time 1 vs Time 2 /3­-2/25­-22/14­-25/26-­24/19­-25/15-­10

Separo a parte das equipes: Time 1 e time 2 e coloco dentro da matriz fazendo mais ou menos a seguinte estrutura:

Equipe| Vitorias| Derrotas | Total de pontos
Time1 |             |                |
Time2 |             |                |
E assim sucessivamente...
Mas as minhas dúvidas são as seguintes, como vou referenciar A string Time 1 a quantidade de vitórias/derrotas que ela teve durante as partidas?

Por exemplo: no primeiro caso, VOLEI NESTLE vs REXONA­-ADES/3­-2/25­-22/14­-25/26-­24/19­-25/15-­10 a equipe vencedora foi "Volei Nestle"e iremos dizer que ela seja o "time 1", aí conto uma vitória para ela, mas no terceiro jogo, essa mesma equipe, perdeu... e aí eu penso, como voltar na matriz para contabilizar a derrota dessa equipe?

Aí vi que - talvez - usar matriz para esse problema não seja o ideial, portanto quais estruturas de dados me aconselham a estudar?

Eu queria algo que eu pudesse criar uma espécie de array associativo, assim como faz no php para que eu pudesse associar um indice a uma chave, criando mais ou menos o seguinte:

Time1=> array(NumVitorias,NumDerrotas,Total)
Time2=> array(NumVitorias,NumDerrotas,Total)
.
.
.
E o mesmo para os demais times. Vocês acham que isso é uma boa ideia? Qual seria uma estrutura no qual eu poderia implementar esse problema? Eu andei lendo sobre hashmap, mas não entendi muito bem...mas qual o conselho de vocês?

Desculpem se não fui muito objetivo, ou claro, qualquer coisa tento explicar novamente!

Desde já, agradeço!

Postado

HashMap é uma ótima opção, utilize o nome do time como key e como value você pode optar por um simples array mesmo ou criar um objeto específico.

 

 

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...