169 похожих чатов

Всем привет! помогите немного разобраться. Была идея залезть под копот unshift.

Предположил, что я могу найти в массиве сперва
наибольшее число, после этого удалив его из изначального массива и вставив в новый, где и пошел бы отчет от большего к меньшему.
Я оформил это в цикл, но уходит оно в итоге в слепой цикл. Подскажите, где я ошибся?

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

6 ответов

17 просмотров

Что значит слепой цикл?

Попробуйте убрать 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

Никита-Ракита Автор вопроса
Sasha S
Попробуйте убрать while и поместить строки с добав...

он не станет пустым? а каким он будет после удаления 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. По правде говоря сама идея нахождения максимального значения и его последующего удаления из исходного массива плоха, т.к. если в исходном массиве будут одинаковые элементы, то все дубликаты пропадут (так и задумывалось?).

Никита-Ракита Автор вопроса
Valery
Чтобы ваша прога заработала добавил одну строчку. ...

благодарю за помощь, согласен, что данное решение выходит громоздким, благодарю за помощь!

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
10
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Карта сайта