Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Поиск 2-х максимальных элементов массива.

RinGinO Ученик (144), на голосовании 5 лет назад
Исправьте ошибку, пожалуйста. Одно число выбирает правильно, а второе - нет.
Дополнен 5 лет назад
function massive4() {
var n4 = 20;
var Array4 = [];
var summa4 = 0;

for (var i = 0; i < n4; i++) {
Array4.push(Math.round(Math.random() * 100));
}
document.getElementById('result4').innerHTML = "Таблица результатов: " + Array4.toString() + ";";

var max1 = 0;
for (var i = 0; i < Array4.length; i++) {
if (Array4[i] > max1) {
max1 = i;
}
}

var max2 = 0;
for (var i = 0; i < Array4.length; i++) {
if (i != max1 && Array4[i] > max2) {
max2 = i;
}
}
document.getElementById('result4_1').innerHTML = "Команда А заняла первое место. Кол-во баллов: " + Array4[max1] + ";" + "" + "Команда Б заняла второе место. Кол-во баллов: " + Array4[max2] + ";";
}//4
Дополнен 5 лет назад
Голосование за лучший ответ
Сигизмунд Сигизмундович Искусственный Интеллект (158215) 5 лет назад
ты думаешь это читабельно ?
кусок кода в скриншоте который надо смотреть под лупой, мало кто будет тебе помогать.
RinGinOУченик (144) 5 лет назад
Я уже увидел, сейчас исправлю
Сигизмунд Сигизмундович Искусственный Интеллект (158215) код заливай куда нить что бы его могли копирнуть есть онлайн редакторы кодов ищи
Алексей Кандрин Мудрец (16301) 5 лет назад
Во втором цикле условие гвно.
Ты там сравниваешь индекс с прошлым максимумом, что бред. (наверно, ты хотел сравнивать индекс с ИНДЕКСОМ прошлого максимума (и его пропускать)... А для этого индекс прошлого максимума тоже надо где-то хранить).
Сечешь?
RinGinOУченик (144) 5 лет назад
Не совсем.
Я уже столько вариантов перебрал, что все смешалось в голове
Алексей Кандрин Мудрец (16301) В программировании надо не варианты перебирать, а думать, что делает твой код.
RinGinOУченик (144) 5 лет назад
Эта фигня работает через раз.
Первый раз протестил нашёл 1 число, первое.
Второй раз - первое неправильно, второе правильно.
Алексей Кандрин Мудрец (16301) Никогда не писал на JS, так что за синтаксис не ручаюсь. var max1 = 0; var i_max1 = 0; for (var i = 0; i < Array4.length(); i++) { if (Array4[i] > max1) { max1 = Array4[i]; i_max1 = i; } } var max2 = 0; for (var i = 0; i < Array4.length; i++) { if (i != i_max1 && Array4[i] > max2) { max2 = Array4[i]; } }
РОМЫЧ НЕСКАЖУ Знаток (388) 5 лет назад
Вот и первая трудность возникла у тебя в программировании. Главное, не останавливайся в изучении, и у тебя все получится!
Leo Worker Знаток (346) 5 лет назад
Код: https://jsfiddle.net/tquL6oax/1/

let arr = [ 10, 30, 40, 100, 70, 1000, 2000, 80, 90, 180, 85, 75, 65, 200 ];
const fn = ( arr ) => {
let high = 0;
let next = 0;
for( let i = 0; i < arr.length; ++i ) {
if( arr[ i ] > high ) {
next = high;
high = arr[ i ];
}
else if( arr[ i ] > next ) {
next = arr[ i ];
}
else {
continue;
}
}
return [ high, next ];
}
console.log( fn( arr ));
Похожие вопросы