Отсортировал Массив по убыванию…оцените код, пожалуйста
Код
var qualificationDistance = 200;
var attempts = [120, 150, 160, 201, 203, 180, 202];
var qualified = false;
var averageBest = 0;
var bestAttemptsCount = 3;
var attemptsCount = attempts.length;
// Сортируем массив попыток по убыванию,
// чтобы лучшие три попытки были в начале массива:
for (var i=attempts.length-1; i>=0; i--) {
var maxValue = attempts[i];
for (var j = i-1; j>=0; j--) {
if (attempts[j] < maxValue) {
maxValue = attempts[j];
var swagg = attempts[i];
attempts[i] = maxValue;
attempts[j] = swagg;
}
}
}
//выводим отсортированный массив:
console.log(attempts);
//Выводим в консоль 3 лучшие попытки и находим их сумму:
for (var n = 0; n <= bestAttemptsCount - 1; n++) {
console.log (attempts[n]);
averageBest += attempts[n];
}
// Считаем среднее значение:
averageBest /= bestAttemptsCount;
if (averageBest > qualificationDistance) {
qualified = true;
console.log('Я прошел квалификацию');
}
//Выводим в консоль среднее значение
console.log('среднее значение равно ' + averageBest);
Инеска, просьба, оцените код пожалуйста…
Такой вопрос: в консоле всегда последним параметром пишется undefined (undefined) - и почему?
Код внутри спойлера должен быть форматирован с помощью кнопки </> в редакторе сообщений.
По самому коду всё правильно. Остается убрать промежуточные выводы в консоль.
Единственное, в начале сообщения вы пишете, что сортируете массив по возрастанию, а по комментариям получается наоборот - по убыванию всё-таки.
На последний вопрос ответить не могу. Могу только сказать, что undefined в конце выводится не всегда (не в каждом испытании). Но закономерность проследить не удалось.
var qualificationDistance = 200;
var attempts = [120, 150, 160, 201, 203, 180, 202];
var qualified = false;
var averageBest = 0;
var averageCount = 3;
var averageSum = 0;
function SortAttemptsByMaxValue(a, b) {
if (a < b) return 1;
if (a > b) return -1;
}
attempts.sort(SortAttemptsByMaxValue);
for (var i = 0; i < averageCount; i++ ){
averageSum += attempts[i];
}
var averageBest = averageSum / averageCount;
if (averageBest > qualificationDistance){
qualified = true;
}
var qualificationDistance = 200;
var attempts = [120, 150, 160, 201, 203, 180, 202];
var qualified = false;
var averageBest = 0;
// Сортировка массива по возрастанию с первого элемента
for (var currentIndex = 0; currentIndex <= attempts.length - 2; currentIndex++) {
var minValue = attempts[currentIndex];
for (var j = currentIndex + 1; j <= attempts.length - 1; j++) {
if (attempts[j] < minValue) {
minValue = attempts[j];
var swap = attempts[currentIndex];
attempts[currentIndex] = minValue;
attempts[j] = swap;
}
}
}
console.log('Массив сейчас: ’ + attempts);
//Берем 3 последних значения из сортированного массива и находим их среднее
var n = attempts.length-1;
var sum=0;
while (n >= attempts.length - 3) {
sum += attempts[n];
n–;
}
averageBest= sum/3;
/Мяу! Я провожу тренировки и хочу понять, пройду ли квалификацию.
В течение тренировки я делаю несколько прыжков, и собираю длины прыжков в массив attempts.
Программа должна выбрать три лучших прыжка, а затем посчитать среднее значение этих трёх прыжков и записать его в переменную averageBest.
Квалификационное значение хранится в переменной qualificationDistance.
Если среднее от лучших трёх прыжков больше квалификационного значения, то я прошёл квалификацию и переменная qualified должна содержать true. Если квалификация не пройдена, то в qualified должно быть false./