Alguém pode me ajuda com essa questão

estou tendendo cria um código simples mas estou tendo dificuldade sou novo comecei a 3 dias esse seria o solicitado:

Antigamente, durante a fase de mata a mata da Champions League, maior competição de futebol do mundo, os jogos eram realizados no formato ida e volta e com a regra do gol fora de casa. Nesse formato, os times jogavam dois jogos entre si, sendo um dos jogos dentro do seu estádio e o outro no estádio do adversário. Para saber qual time tinha sido eliminado, olhava-se o placar acumulado, ou seja, a soma dos resultados. Existiam três resultados possíveis:

  • Time A eliminado: caso o Time B tivesse ganhado no placar acumulado ou em caso de empate em que o Time B tivesse feito mais gols fora de casa (no estádio do adversário);
  • Time B eliminado: caso o Time A tivesse ganhado no placar acumulado ou em caso de empate em que o Time A tivesse feito mais gols fora de casa (no estádio do adversário).
  • Empate: caso houvesse empate no placar acumulado e a quantidade de gols fora de casa de ambos os times fosse igual.

Em caso de empate, tinha-se a prorrogação.

Input Format

A entrada do problema será sempre composta por quatro variaveis:

  • golsTimeADentro do tipo number. Variável responsável por armazenar quantos gols o time A fez no jogo dentro de casa;
  • golsTimeAFora do tipo number. Variável responsável por armazenar quantos gols o time A fez no jogo fora de casa;
  • golsTimeBDentro do tipo number. Variável responsável por armazenar quantos gols o time B fez no jogo dentro de casa;
  • golsTimeBFora do tipo number. Variável responsável por armazenar quantos gols o time B fez no jogo fora de casa.

Output Format

Você deve imprimir na tela:

  • TIME A ELIMINADO em caso de eliminação do time A;
  • TIME B ELIMINADO em caso de eliminação do time B;
  • PRORROGACAO em caso de empate.

esse e o meu codigo

function solucao(golsTimeADentro, golsTimeAFora, golsTimeBDentro, golsTimeBFora) {
//seu codigo aqui

//time A eliminado

if ((golsTimeBDentro+golsTimeBFora)>(golsTimeADentro+golsTimeAFora)&&(golsTimeBFora>golsTimeADentro)){
Console.log(‘TIME A ELIMINADO’);}

else if ((golsTimeADentro+golsTimeAFora)>(golsTimeBDentro&+golsTimeBFora)&&(golsTimeAFora>golsTimeBDentro)){ 

console.log(‘TIME B ELIMINADO’);}

else if ((golsTimeADentro+golsTimeAFora==golsTimeBDentro+golsTimeBFora)&&(golsTimeAFora==golsTimeBFora))
     console.log('PRORROGACAO');

}

porem nos testes ele da ~ no response on stdout ~

Imagino que esse código seja javascript né?

Eu copiei seu código abaixo adicionando a parte do “else” no final:

function solucao(golsTimeADentro, golsTimeAFora, golsTimeBDentro, golsTimeBFora) {
    if ((golsTimeBDentro + golsTimeBFora) > (golsTimeADentro + golsTimeAFora) &&(golsTimeBFora>golsTimeADentro)){
      console.log('TIME A ELIMINADO');
    } else if ((golsTimeADentro+golsTimeAFora)>(golsTimeBDentro&+golsTimeBFora)&&(golsTimeAFora>golsTimeBDentro)){
      console.log('TIME B ELIMINADO');
    } else if ((golsTimeADentro+golsTimeAFora==golsTimeBDentro+golsTimeBFora)&&(golsTimeAFora==golsTimeBFora)) {
     console.log('PRORROGACAO');
    } else {
     console.log('nao sei decidir');
    }
}

Rodando no console para alguns valores eu recebi:

solucao(1,1,0,0) 
// TIME B ELIMINADO

solucao(1,1,1,1)
// PRORROGACAO

solucao(0,0,1,1)
// TIME A ELIMINADO

solucao(2,1,1,2)
// nao sei decidir

Ou seja, tem um problema na sua lógica pra decidir o ganhador, dá uma conferida nisso.

Em geral, é muito comum você esquecer alguns casos quando não coloca um else no final. Deixar algo lá te ajuda a pegar os casos que sua lógica não está pegando.

Na realidade, depois dos dois jogos, terás sempre de saber decidir. Se não sabes decidir é porque algo na lógica anterior está errado. O caso “não sei decidir” deveria ser “Time A eliminado” porque ambos marcaram 3 golos no total mas A marcou 1 golo fora e B marcou 2 golos fora.

Olhando para os dois primeiros ifs, porque os && ? Se o número total de golos de um time é maior que o número total de golos do outro time não há mais nada a ver. Esse time vence e o outro é eliminado. O que talvez quisesses colocar aí seria um || para a condição de empate no total de golos mas com um dos times a marcar mais golos fora.

1 curtida

A ideia básica é:

  • se o total de gols (ou seja, gols em casa + gols fora de casa) dos dois times for igual, aí você compara os gols fora de casa
  • se o total de gols dos times não for igual, não precisa comparar os gols fora de casa (afinal, esse é um critério de desempate, ou seja, só olhe para os gols fora se o placar estiver empatado)

Ou seja:

function resultado(golsTimeADentro, golsTimeAFora, golsTimeBDentro, golsTimeBFora) {
    var totalA = golsTimeAFora + golsTimeADentro;
    var totalB = golsTimeBFora + golsTimeBDentro;
    if (totalA === totalB) { // se deu empate no total de gols, avalia os gols fora de casa
        if (golsTimeAFora > golsTimeBFora) {
            console.log('TIME B ELIMINADO');
        } else if (golsTimeAFora < golsTimeBFora) {
            console.log('TIME A ELIMINADO');
        } else {
            console.log('PRORROGACAO');
        }
    } else if (totalA > totalB) { // não deu empate no total, então basta ver quem fez mais
        console.log('TIME B ELIMINADO');
    } else { // se chegou aqui é porque totalB é maior que totalA
        console.log('TIME A ELIMINADO');
    }
}

Ou ainda, dá para pensar de outra forma:

  • se B fez mais gols que A (somando dentro e fora de casa), ou se empatou mas B fez mais gols fora, então A foi eliminado
  • se A fez mais gols que B (somando dentro e fora de casa), ou se empatou mas A fez mais gols fora, então B foi eliminado
  • se nenhum dos casos acima ocorreu, então empatou (ou seja, prorrogação)

Ou seja:

function resultado(golsTimeADentro, golsTimeAFora, golsTimeBDentro, golsTimeBFora) {
    var totalA = golsTimeAFora + golsTimeADentro;
    var totalB = golsTimeBFora + golsTimeBDentro;
    if (totalB > totalA || (totalB === totalA && golsTimeBFora > golsTimeAFora)) {
        console.log('TIME A ELIMINADO');
    } else if (totalA > totalB || (totalB == totalA && golsTimeAFora > golsTimeBFora)) {
        console.log('TIME B ELIMINADO');
    } else {
        console.log('PRORROGACAO');
    }
}
1 curtida