let qualified = false;
let qualificationDistance = 200
let attempts = [812, 1360, 657, 1247, 185];
let averageBest = 0;
let attemptsCount = attempts.length;
console.log(attemptsCount);
let amountBestJump = 3;
for (let i = 0; i <= attempts.length - 2;i++) {
let minValue = attempts[i];
for (let j = i + 1; j <= attempts.length - 1; j++) {
if (attempts[j] < minValue) {
//находим самое мелкое число
minValue = attempts[j];
//начальное число массива
let swap = attempts[i];
// Минимальное число встает в первое число массива
attempts[i] = minValue;
// Возврат прежденего числа на место того числа,которое его заменило и стало первым
attempts[j] = swap;
}
}
}
console.log(attempts + " это массив");
//Сумма лучших прыжков. Из длины массива вычитаем колличество лучших прыжков. 5-3 =2 Это каждый раз увеличиваем на единицу. А так как в конце стоят самые большие числа, то следующие тоже нам подходят.
for (let i = attemptsCount - amountBestJump; i < attemptsCount; i++) {
averageBest =averageBest+ attempts[i];
console.log(i);
}
console.log(averageBest + " это сумма лучших прыжков");
//Среденее значение cуммы лучших прижков
averageBest = averageBest/amountBestJump;
console.log(averageBest + " среднее значение суммы лучших прыжков");
if (averageBest>qualificationDistance) {qualified =true;} else {qualified = false;}
let qualified = false;
let qualificationDistance = 200;
let attempts = [];
for (let i = 0; i <= attempts.length - 2; i ++) {
maxValue = attempts[i];
for (let j = i + 1; j <= attempts.length - 1; j ++) {
if (attempts[j] > maxValue) {
maxValue = attempts[j];
let swap = attempts[i];
attempts[i] = maxValue;
attempts[j] = swap;
}
}
}
let averageBest = (attempts[0] + attempts[1] + attempts[2]) / 3;
if (averageBest >= qualificationDistance) {
qualified = true;
};
У меня код работал только на половину проверочных заданий, пока я не присвоила значение 200 переменной qualificationDistance. До этого там где должен был быть true был false.
Из самого задания я так и не увидела этого требования про qualificationDistance = 200.
Вопрос, это недочет со стороны создателей задачи или проблемы с моей логикой?
// Сортируем по возростанию
for (let i = 0; i <= attempts.length - 2; i++){
let minValue = attempts[i];
for ( let j = i+1; j <= attempts.length - 1; j++){
if (attempts[j] < minValue){
minValue = attempts[j];
let swap = attempts[i];
attempts[i] = minValue;
attempts[j] = swap;
}
}
}
//Записываем лучшие результаты в переменные.
let gold = attempts[attempts.length - 1];
let silver = attempts[attempts.length - 2];
let bronze = attempts[attempts.length - 3];
// Считаем среднее из лучших прыжков.
averageBest = (gold + silver + bronze) / 3;
if (averageBest > qualificationDistance) {
qualified = true; // разрешаем квалификацию
}
Решил не использовать встроенные методы языка вроде sort(), поскольку как я понял суть задачи была проверить способность создания подобных конструкций вручную, а не уметь хорошо гуглить .
Вот мое решение с комментариями, оставляю вруг кому-то пригодится:
let qualificationDistance = 200;
let attempts = [200, 100, 302, 5];
let qualified = false;
let averageBest = 0;
//Внешний цикл прохода по индексам (до предпоследнего значения)
for(i = 0; i < attempts.length -1; i++){
let minValue = attempts[i];
//Внутренний цикл прохода по индексам (от индекса 1 до последнего значения)
for(let j = i + 1; j < attempts.length; j++) {
// console.log(j);
//Условное ветвление (замена minValue на минимальное найденное, запись в своп с последующей заменой местами attempts[i] и attempts[j])
if(attempts[j] < minValue){
minValue = attempts[j];
let swap = attempts[i];
attempts[i] = minValue;
attempts[j] = swap;
}
}
}
//Вывод отсортированного по возрастанию массива
console.log(attempts);
//3 лучших попытки
let firstBestAttempt = attempts[attempts.length - 1];
let secondBestAttempt = attempts[attempts.length - 2];
let thirdBestAttempt = attempts[attempts.length - 3];
averageBest = (firstBestAttempt + secondBestAttempt + thirdBestAttempt) / 3;
console.log('Среднее значение 3 лучших прыжков: ' + averageBest);
if(averageBest > qualificationDistance) {
qualified = true;
console.log('Квалификация пройдена, Босс');
} else {
qualified = false;
console.log('Квалификация не пройдена, Босс. Тренируйтесь еще.');
}
/
let qualificationDistance = 200;
let attempts = [120, 150, 160, 201, 203, 180, 202];
let qualified = false;
let averageBest = 0;
let currentIndex = 0;
let maxValue = attempts[currentIndex];
let swap = attempts[0];
for (let i=0; i<=attempts.length-2;i++){
let maxValue = attempts[i];
for (let j=i+1; j<=attempts.length-1; j++){
if(attempts[j]>maxValue){
maxValue=attempts[j];
let swap = attempts[i];
attempts[i] = maxValue;
attempts[j] = swap;
}
console.log(attempts);
}
}
console.log(swap);
let best = [attempts[0], attempts[1], attempts[2]];
console.log(best);
let median = (attempts[0] + attempts[1] +attempts[2]) / 3;
console.log(median);
averageBest = median;
if (averageBest>qualificationDistance){
qualified = true;
console.log ('я прошёл квалификацию ');
} else {
qualified = false;
console.log (‘квалификация не пройдена’);
}
/
У всех переменная объявляется через var, через let - неправильно?
if (averageBest > qualificationDistance) {
qualified = true;
console.log('Квалификация пройдена, длина средняя длина прыжка ’ + averageBest);
} else {
qualified = false;
console.log('Квалификация не пройдена, длина средняя длина прыжка ’ + averageBest);
}