Предположил, что я могу найти в массиве сперва
наибольшее число, после этого удалив его из изначального массива и вставив в новый, где и пошел бы отчет от большего к меньшему.
Я оформил это в цикл, но уходит оно в итоге в слепой цикл. Подскажите, где я ошибся?
puts "Исходный массив:"
first_array = [1, 2, 3, 4, 5, 6, 7]
puts first_array.to_s
puts "Новый массив, полученный из исходного:"
last_array = []
max_value = 0
while first_array != []
for item in first_array do
if item > max_value
max_value = item
end
end
first_array.delete(max_value)
last_array << max_value
end
puts last_array.to_s
puts max_value
Что значит слепой цикл?
Попробуйте убрать while и поместить строки с добавлением и удалением в цикл for Не за компом, но заинтересовался)) Да в итоге тут из ферст масива удаляется 7, а цикл while не остановится так как массив не станет пустым И можно убрать max_value , так как она не нужна и все это можно делать с item Мне кажется так: last_array = [] max_value = 0 for item in first_array do first_array.delete(item) last_array << item end puts last_array.to_s puts max_value
он не станет пустым? а каким он будет после удаления 7?
Чтобы ваша прога заработала добавил одну строчку. puts "Исходный массив:" first_array = [1, 2, 3, 4, 5, 6, 7] p first_array puts "Новый массив, полученный из исходного:" last_array = [] max_value = 0 while first_array != [] for item in first_array do if item > max_value max_value = item end end first_array.delete(max_value) last_array << max_value max_value = 0 # нужно сбросить, чтобы найти НОВЫЙ max_value end p last_array puts max_value Пару замечаний: 1. Не понятно, что вы хотите сделать - упорядочить исходный массив по убыванию или просто расположить его элементы в обратном порядке. 2. По правде говоря сама идея нахождения максимального значения и его последующего удаления из исходного массива плоха, т.к. если в исходном массиве будут одинаковые элементы, то все дубликаты пропадут (так и задумывалось?).
благодарю за помощь, согласен, что данное решение выходит громоздким, благодарю за помощь!
Обсуждают сегодня