Если найдено несколько наибольших отрицательных элементов в массиве - найти элемент с наименьшим индексом
В задании требуется:
Найти в массиве наибольший элемент среди отрицательных и его индекс. Если таких элементов несколько, найдите элемент с наименьшим индексом
У меня был код, который находил из интервала чисел 15-20 все максимальные элементы и их индексы(в массивы MZ и Indexes заносились макс элементы и их индекс после проверки)
A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for (i=0; i<A.length; i++)
{
//С таким синтаксисом random мы получаем целое случ число
A[i] = Math.floor(Math.random() * (20 - 15 + 1)) + 15
}
console.log("Массив = "+A)
Max = 0
MZ = []
Indexes = [-1]
for ( i = 0; i < A.length; i++)
{
if (A[i] > Max)
{
Max = A[i]
Indexes.length = 0
Indexes.push(i)
MZ.length = 0
MZ.push(Max)
}
else
{
if (A[i] == Max) {MZ.push(Max); Indexes.push(i);}
}
}
console.log ('Максимальные элементы ' +MZ)
console.log ('Их индексы ' +Indexes)
Решил переделать под этот случай и добавил проверку длины массива Index(можно и MinZ) , где если больше одного макс числа - идет проверка на наибольший индекс, но после внедрения условия for ( i = 0; i < Index.length; i++) код перестал запускаться. Полный код программы(хотелось бы исправить ошибку, а не переписывать с нуля):
M= prompt('Ввести массив с отрицательными элементами: ')
Array.from(M) // Cоздаёт Array из массивоподобного или итерируемого объекта
alert ('Массив ' +M)
Most = 0
MinZ = []
Index = [-1]
for ( i = 0; i < M.length; i++)
{
if (M[i] > Most)
{
Most = M[i]
Index.length = 0
Index.push(i)
MinZ.length = 0
MinZ.push(Most)
}
else
{
if (M[i] == Most) {MinZ.push(Most); Index.push(i) }
}
}
if (Index.length > 1)
{
Mznach = 0
MIndex = Index[i]
for ( i = 0; i < Index.length; i++)
{
if (MIndex > Index[i])
{Mznach = MinZ; MIndex = Index[i]}
console.log ('Наибольший среди отрицательных элемент ' +Mznach)
console.log ('Его индекс ' +MIndex)
}
}
else
{
console.log ('Наибольший среди отрицательных элемент ' +MinZ)
console.log ('Его индекс ' +Index)
}
Ответы (1 шт):
зачем такие гробы?
искомый элемент равен 0 элементу, искомый индекс равен 0
пройти по всем элементам массива
если элемент меньше 0 и больше максимального элемента - считать текущий элемент искомым, текущий индекс - искомым
после прохода по массиву проверить удовлетворяет ли найденный элемент нужным критериям (меньше 0) - если да - выдать искомый индекс, если нет - написать что элементов найдено не было
итого задача на 4 строчки