Ввести 3 вещественных числа. Вывести на экран разность максимального и минимального чисел из введенных

Написал вот такой вот код, но все работает не так, как надо, в чем может быть проблема? Буду рад если кто-то именно объяснят в чем дело.

function asd(a, b, c){

    if(a>b && a>c){
        if(b<c){
            var sum = a - b;
        }else if(b>c){
            var sum = a - c;
        }
    }else if(b>a && b>c){
        if(a<c){
            var sum = b - a;
        }else if(a>c){
            var sum = b - c;
        }
    }else if(c>a && c>b){
        if(a<b){
            var sum = c - a;
        }else if(a>b){
            var sum = c - b;
        }
    } 
    alert(sum); 
}

Ответы (2 шт):

Автор решения: V-tyna

На первый взгляд ваша функция возвращает нужный результат (максимальное число минус минимальное). Не совсем понимаю, что вы подразуменваете под словами - "работает не так как надо".

На мой взгляд слишком много вложенности проверок, а так же вы всё время внутри каждой проверки пересоздаёте переменную sum. Её для удобства можно вынести за передлы проверок, а внутри перезаписывать, вместо создания каждый раз заново.

Я бы порекомендовала воспользоваться нативными методами, вот таким образом:

    function asd(a, b, c) {
    let max = Math.max(a, b, c);
    let min = Math.min(a, b, c);
    return sum = (max - min);
    }
→ Ссылка
Автор решения: Sergey Glazirin

Можно доработать метод и действовать следующими способами:

  1. Получить массив из arguments, отсортировать его и вычесть из последнего элемента первый.

  2. Сразу передавать на вход массив из чисел, отсортировать его и вычесть из последнего элемента первый.

Данный подход позволяет в будущем увеличить количество вводимых чисел при необходимости.

function asd(a, b, c) {
  const args = [...arguments].sort((a, b) => a - b);
  return args[args.length - 1] - args[0];
}

console.log(asd(3, 2, 1));
console.log(asd(3, 2, 1, 78, 3, 434, 2));


function asdFromArray(arr) {
  const args = arr.sort((a, b) => a - b);
  return args[args.length - 1] - args[0];
}

console.log(asdFromArray([3, 2, 1]));
console.log(asdFromArray([3, 2, 1, 78, 3, 434, 2]));
console.log(asdFromArray([-10, 2, 1]));
console.log(asdFromArray([-10, -2]));

→ Ссылка