2
respostas

Gostaria de saber o pq a minha função não funcionou, por favor

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));
2 respostas

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