function oMaior (a, b, c){
if(a > b && c){
return (`${a} é o maior`);
}if (b > a && c){
return (`${b} é o maior`);
}if (c > a && b){
return (`${c} é o maior`);
}
}
console.log(oMaior(10, 5, 20));
function oMaior (a, b, c){
if(a > b && c){
return (`${a} é o maior`);
}if (b > a && c){
return (`${b} é o maior`);
}if (c > a && b){
return (`${c} é o maior`);
}
}
console.log(oMaior(10, 5, 20));
Oi, Marcos! Tudo bem?
O problema ocorre devido à forma como estamos utilizando as condições dentro dos if. Quando escrevemos a > b && c, o JavaScript interpreta isso como a > b e c sendo um valor verdade (truthy), ou seja, não estamos comparando a, b e c da maneira como esperamos.
Para corrigir isso, devemos fazer cada comparação explicitamente, de acordo com o exemplo abaixo:
function oMaior(a, b, c) {
if (a > b && a > c) {
return (`${a} é o maior`);
} else if (b > a && b > c) {
return (`${b} é o maior`);
} else {
return (`${c} é o maior`);
}
}
console.log(oMaior(10, 5, 20));
Agora, a função compara corretamente a, b e c em cada if e quando chamarmos oMaior(10, 5, 20), o resultado será 20 é o maior.
Espero ter ajudado!
Um forte abraço e bons estudos!
O problema no seu código está no uso incorreto dos operadores lógicos dentro dos condicionais if. Quando você escreve algo como a > b && c, o && não está comparando corretamente os valores que você deseja. Isso é porque c sozinho não é comparado diretamente, mas é avaliado como um valor "verdadeiro" ou "falso" (truthy ou falsy). Isso pode causar comportamento inesperado.
O correto seria comparar os três valores entre si em cada condição. A comparação deveria ser algo como a > b && a > c para verificar corretamente se a é maior que ambos b e c.
Aqui está o código corrigido:
function oMaior (a, b, c) {
if (a > b && a > c) {
return (`${a} é o maior`);
} else if (b > a && b > c) {
return (`${b} é o maior`);
} else {
return (`${c} é o maior`);
}
}
console.log(oMaior(10, 5, 20)); // 20 é o maior