Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Ошибка при формировании массива


Автор: Checrygin 11.8.2011, 14:17
     Начал разбирать с Раби, и при решение задачи на массивы возникла проблема.
Задача: заполнять массив словами пока не встретится пустая строка, после этого отсортировать по алфавиту и показать. Вот мой код 
Код

mas[0]=0
i=0
while mas[i] != ''
  mas[i]= gets.chomp
  i=i+1
end
mas.sort
len= mas.length
j=0
while j <= length
   puts mas[i].to_s
end



Объясните почему ошибка и как ее исравить?
И еще а как тут можно обойтись без sort? В этом же тоже фишка=)        

Автор: WarHog 17.8.2011, 00:20
Тут не одна ошибка.
1) Нет инициализации массива mas - д.б.
Код

mas = []

или
Код

mas = Array.new

2) условие проверки в первом while неправильное. Ты заполняешь из gets i-й элемент массива, потом инкрементируешь и проверяешь следующий i + 1 элемент
3) ты используешь метод sort, который не изменяет коллекцию, нужен sort!
4) во втором while тоже неправильное условие проверки, length или size возвращает число элементов, которое ты сравниваешь на <= с индексом
5) там же отсутствует инкремент индекса

Только это не очень рубийный код. Я бы написал так:
Код

mas = []
begin
    element = gets.chomp
    mas << element unless element.empty?
end while not element.empty?
mas.sort!
mas.each { |element| puts element }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)