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');
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.
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');
}
}