Массивы

Помогите начинающему кодеру решить задачу:
Нужно написать программу, которая просит ввести сколько угодно слов (по одному слову в строке до тех пор, пока не нажмём Enter на пустой строке) и которая затем повторяет эти слова в алфавитном порядке.
При этом программа нужно сделать в 2х вариантах: с методом sort и без него.
Заранее огромное спасибо!

Обсуждение

Re: Массивы

Вот вариант с использованием метода sort:

words = []

while !(word = STDIN.gets.chomp).empty?
  words << word
end

puts words.sort.join("\n")

Re: Массивы

Спасибо, spine.
Но, поскольку я учусь по учебнику, задам несколько глупых вопросов:
1. что такое STDN
2. почему после empty идет вопросительный знак
3. за что отвечает "/n"
Еще раз благодарю Вас.

Re: Массивы

1. STDIN это поток ввода открытый для твоей программы, по умолчнию это консоль, если запустить твою программу следующим образом:

ruby your_prog.rb < some_file.txt

То в STDIN будет содержимое файла some_file.txt

Помимо STDIN, есть еще STDOUT и STDERR, но они открыты на запись, тоесть в них можно только писать данные. По умолчанию STDOUT и STDERR связаны с консолью.

Идея всех этих STDIN, STDOUT и STDERR - обеспечить прозрачный механизм коммуникации с внешним миром, когда источником данных может быть любой объект, не только консоль.

2. знак ? это часть имени метода, так уж принято в Ruby, означает что вызов метода отвечает на какой то вопрос, в данном случае пуста ли строка, то есть size == 0. В других языках такие методы часто пишут используя префикс is. Например на С++ или Java метод empty? имел бы имя isEmpty, что не так выразительно.

3. \n означает переход на новую строку, например код:

puts "a\nb"

напечатает на экран (вернее в STDOUT)

a
b

Того же эффекта можно было бы добиться и такой записью:

puts "a
b"

Но такой подход к оформлению программ отрицательно сказывается на читабельности кода.

Re: Массивы

Еще раз спасибо,spine.

Re: Массивы

Для начинающего это очень сложно :)))

Предлагаю более простую конструкцию, не выходящую за рамки обсуждаемого учебника (LearnToProgram):

names = []
val = gets.chomp
names.push(val.to_s)
while (val != '')
val = gets.chomp
names.push(val.to_s)
if (val == '')
puts names.sort
end
end

Прошу не пинать, я только учусь :)

Как избежать повторения в этом примере? Мне очень не нравится что приходится объявлять массив и переменную дважды. А иначе - программа не работает.

Re: Массивы

Да много дубликатов, давай попробуем упростить код:

names = []

loop do
  var = gets.chomp
  if var.empty?
    puts names.sort
    break
  else
    names << var
  end
end

Количество строк осталось прежним, но логика стала более прозрачной.

var.to_s делать не надо, т.к. gets.chomp всегда возвращает строку. names << - это более короткий вариант записи names.push

Re: Массивы

Спасибо, многое прояснилось. Как-то я пропустил метод .empty в Pickaxe.

Re: Массивы

Всем доброго времени суток!
Хочу сделать вот такую программку: в одном массиве - числа.
В другом - слова.
(Например, регионы - коды регионов; деятельность по оквэд - код деятельности и проч.).
Так вот, надо, чтобы при введении слова, выдавался его соответствующий знак в виде числа из массива, и наоборот: ввел число - выдают из первого массива слово.
Например, Адыгея - 1, 1 - Адыгея.

Вообщем-то руби - мой первый язык)программирования, поэтому может кто и подскажет как это оформить.

Re: Массивы

Вот такая программка получилась, немного прокомментировал код, но если чего не понятно спрашивай.

# Некая сущность в которой храним код и имя
class Entity
  attr_reader :code, :name
  def initialize(code, name)
    @code = code
    @name = name
  end 
end

# Коллекция для хранения и поиска объектов класса Entity
class EntityCollection
  def initialize
    @list = []
  end

  def push(entity)
    @list << entity
  end

  def get_by_code(code)
    @list.each { |entity|
      return entity if entity.code == code
    }
    return nil
  end

  def get_by_name(name)
    @list.each { |entity|
      return entity if entity.name == name
    }
    return nil
  end
end

# Заполняем коллекцию данными
elist = EntityCollection.new
elist.push(Entity.new(1,'Адыгея'))
elist.push(Entity.new(7,'Урюпинск'))

# Производим поиск сущностей
enity = elist.get_by_name('Урюпинск')
puts enity.code # выведет 7

enity = elist.get_by_code(1)
puts enity.name # выведет Адыгея

Re: Массивы

Благодарю. Буду разбираться - с классами у меня пока сложно. Ну ничего:)
Если, что напишу.

Re: Массивы

У меня этот способ и короче работает:

words = []
until (word = gets.chomp).empty?
  words << word
end
puts words.sort

Re: Массивы

Всем всего наилучшего!
Скажите можно ли сделать следующее:
Пусть есть массив [0..9]. Нужно - вывести все возможные комбинации из четырех чисел. При это не случайным образом, а именно ПОСЛЕДОВАТЕЛЬНО и ИМЕННО все.
Заранее спасибо за ответ.

tag heuer watches

ed hardy clothing

jaeger lecoultre watches calvin klein watches chopard watches calvin klein watches Skelton at (604) 938-2029 or michelle.skelton fairmont.com. *** MOUNTAIN FM CHRISTMAS BREAKFAST: On Wednesday (Dec. 1) panerai watches make sure you head to the Westin Resort and Spa for Mountain FM’s annual Christmas Breakfast from 6:30 to 9 a.m. Morning hosts R

concord watches

ed hardy clothing

rolex movado watches the Peekaboo and the contemporary functional style of our Cross Body bags baume mercier watches customers know that they are getting a stylish quality fashion statement when they go with Fendi. Lots of purses or just one solid handbag Your opinion ebel watches citizen watches Let me paint a pict

секс видео

cartier watches

ed hardy clothing

armani watch replica rolex watches a list. They’re doing the same thing this year but they’re also buying for themselves patek philippe watches ed hardy t shirt seiko watches ” he said. Among some of the hot sellers were a luggage set for $49.99 and $39.99 cashmere sweaters. He noted that two groups that helped fuel customer traffi

tag heuer watch

ed hardy clothing

iwc watches ncluding upper and lower body concord watch core yoga cardio and cardio boxing — plus there are 10 preset programs such as a challenging "Belly Buster" program. Similar to the TV series seiko watch bvlgari watches these games also allow you to experience competitive challenges zenith watches weighin

patek philippe watches

ed hardy clothing breitling replica cartier watches panerai watches edhardy shirts ed hardy clothing about a difference. A woman is such who will be able to attract more men to her. Men like women who behave like ladies all the time. In fact you will never find yourself seated at home over weekends as you will always have someone to go out with.

БЕСПЛАТНОЕ ПОРНО БЕСПЛАТНО

видео минет

Порно видео молоденькие сосут порно
минет школьницы онлайн онлайн
блондинку в рот онлайн
Порно видео минет со слезами онлайн
Порно видео глубокий горловой минет смотреть
Онлайн ролик мама сосет хуй онлайн
порно видео минет глубокое горло смотреть
Смотреть глубокий минет он лайн
Лучший отсос онлайн
Порно ролик миньет молоденькой
глубокий королевский минет онлайн
Порно видео мама друга сосет
Порно видео домашний минет зрелых
порно со спермой на лице онлайн
порно видео жестко минет смотреть
Смотреть любительский глубокий минет
Смотреть блондинка сосет видео онлайн
Порно ролик домашние съемки минета
порно видео минет на улице видео смотреть
Смотреть порно онлайн любительский минет
Порно видео домашнее видео онлайн миньет
молоденькие миньет порно смотри в онлайне
порно видео как попросить девушку отсосать смотреть
Порно ролик любительское порно миньет
сперма на лице девочек смотри онлайн

Продвижение сайтов

Сайты-визитки разрабатываются по уникальным, эксклюзивным проектам и отличаются сравнительной дешевизной. создать сайт