Испытание: прыжки в длину.


#1

Здравствуйте. Подскажите, где ошибка? Часть проверок совпадает, часть нет.

Код
for (var i = 0; i <= attempts.length - 2; i++) {
   var maxDistance = attempts[i];
for (var j = i + 1; j <= attempts.length - 1; j++) {
  if (attempts[j] > maxDistance) {
    maxDistance = attempts[j];
    var swap = attempts[i];
    attempts[i] = maxDistance;
    attempts[j] = swap;
        } 
      }
}
averageBest = (attempts[0] + attempts[1] + attempts[2]) / 3;
if (averageBest >= qualificationDistance) {
  qualifield = true;
  } else {
    qualifield = false;
    }

#2

var qualified = false;
Обратите внимание, какую переменную вы используете в последнем условии. (проверьте по буквам)


#3

ага, опечатался, спасибо.


#4

Отсортировал Массив по убыванию…оцените код, пожалуйста

Код
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) - и почему?


#5

Код внутри спойлера должен быть форматирован с помощью кнопки </> в редакторе сообщений.
По самому коду всё правильно. Остается убрать промежуточные выводы в консоль.
Единственное, в начале сообщения вы пишете, что сортируете массив по возрастанию, а по комментариям получается наоборот - по убыванию всё-таки.
На последний вопрос ответить не могу. Могу только сказать, что undefined в конце выводится не всегда (не в каждом испытании). Но закономерность проследить не удалось.


#6

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;
}


#7

Прошу оценить код:

var qualificationDistance = 200;
var attempts = [120, 150, 160, 201, 203, 180, 202];
var qualified = false;
var averageBest = 0;

for (var i=0; i<=attempts.length; i++) {
   var value = attempts[i];
   for (var j=i+1; j+1<=attempts.length; j++) {
      if ( attempts[j] < value) {
         value = attempts[j];
         var swap = attempts[i];
         attempts[j] = swap;
         attempts[i] = value;
      }
   }
}

for (var dis=0; dis<=attempts.length-1; dis++) {
  averageBest = (attempts[dis]+attempts[dis-1]+attempts[dis-2])/3;
  if (averageBest > qualificationDistance) {
qualified = true; 
  }
}
console.log(averageBest)

#8

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;

if (averageBest>qualificationDistance) {
qualified = true;
} else {
qualified = false;
}

/Мяу! Я провожу тренировки и хочу понять, пройду ли квалификацию.
В течение тренировки я делаю несколько прыжков, и собираю длины прыжков в массив attempts.
Программа должна выбрать три лучших прыжка, а затем посчитать среднее значение этих трёх прыжков и записать его в переменную averageBest.
Квалификационное значение хранится в переменной qualificationDistance.
Если среднее от лучших трёх прыжков больше квалификационного значения, то я прошёл квалификацию и переменная qualified должна содержать true. Если квалификация не пройдена, то в qualified должно быть false.
/