Массивы
пн, 10/11/2008 - 17:42 — Гость
Помогите начинающему кодеру решить задачу:
Нужно написать программу, которая просит ввести сколько угодно слов (по одному слову в строке до тех пор, пока не нажмём Enter на пустой строке) и которая затем повторяет эти слова в алфавитном порядке.
При этом программа нужно сделать в 2х вариантах: с методом sort и без него.
Заранее огромное спасибо!

Обсуждение
Re: Массивы
Вот вариант с использованием метода sort:
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 означает переход на новую строку, например код:
напечатает на экран (вернее в STDOUT)
b
Того же эффекта можно было бы добиться и такой записью:
b"
Но такой подход к оформлению программ отрицательно сказывается на читабельности кода.
Re: Массивы
Еще раз спасибо,spine.
Re: Массивы
Для начинающего это очень сложно :)))
Предлагаю более простую конструкцию, не выходящую за рамки обсуждаемого учебника (LearnToProgram):
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: Массивы
Да много дубликатов, давай попробуем упростить код:
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: Массивы
У меня этот способ и короче работает:
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
секс видео
Порно видео Jenna jameson мастурбирует
Смотреть мама с сыном секс
Глубокий минет aurora snow смотри в онлайне
Aurora snow трах жопы онлайн
Онлайн ролик Bree olson в жопу трахает
Порно ролик Monique alexander отсосала хер
vanessa lane секс смотри онлайн
порно видео девка жарко ебётся дома Онлайн смотреть порно смотреть
Порно ролик Kayden kross анал
Порно видео Jenna jameson секас онлайн
Audrey hollander ебля онлайн смотри в онлайне
Порно ролик Секс с jenna jameson онлайн
внучка трахает дедугана онлайн
Смотреть Негр ебёт mia rose
angel dark видео смотри онлайн
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
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.
БЕСПЛАТНОЕ ПОРНО БЕСПЛАТНО
БЕСПЛАТНОЕ ПОРНО БЕСПЛАТНО
видео минет
Порно видео молоденькие сосут порно
минет школьницы онлайн онлайн
блондинку в рот онлайн
Порно видео минет со слезами онлайн
Порно видео глубокий горловой минет смотреть
Онлайн ролик мама сосет хуй онлайн
порно видео минет глубокое горло смотреть
Смотреть глубокий минет он лайн
Лучший отсос онлайн
Порно ролик миньет молоденькой
глубокий королевский минет онлайн
Порно видео мама друга сосет
Порно видео домашний минет зрелых
порно со спермой на лице онлайн
порно видео жестко минет смотреть
Смотреть любительский глубокий минет
Смотреть блондинка сосет видео онлайн
Порно ролик домашние съемки минета
порно видео минет на улице видео смотреть
Смотреть порно онлайн любительский минет
Порно видео домашнее видео онлайн миньет
молоденькие миньет порно смотри в онлайне
порно видео как попросить девушку отсосать смотреть
Порно ролик любительское порно миньет
сперма на лице девочек смотри онлайн
Продвижение сайтов
Сайты-визитки разрабатываются по уникальным, эксклюзивным проектам и отличаются сравнительной дешевизной. создать сайт