| Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум на Исходниках.RU > Ruby > Задачи для начинающих ruby |
| Автор: Aleksandra_071 08.09.11, 21:25 |
| Всем здравствуйте, я тут новенькая, сегодня приступила к изучению ruby, и сразу возникли проблемы. Я уверена, что подобная тема уже есть, но я ее создала, чтобы привлечь больше внимания т.к. реально нужна помощь, в кротчайшие сроки. Не могу описать на руби решение элементарной задачи. Написала на php & java, и все равно не могу перевести. Задача: Напишите скрипт Ruby, который позволит пользователю ввести несколько имён (без фамилий). Когда пользователь вводит 'quit', скрипт должен вывести имена в алфавитном порядке (друг под другом) и напечатать каждое второе имя в обратном порядке. Примерное решение: Это класс который тупо приветствует всех. class HelloEveryone attr_accessor :names # Создать объект def initialize(names = "Guest") @names = names end # Поприветствовать всех def say_hi if @names.respond_to?("each") # Поскольку @names - это некий список, перебрать его элементы @names.each do |name| puts "Hello #{name}!" end else puts "Hello #{@names}!" end end Для вывода в алфавитном порядке есть такой метод: a = [ "d", "a", "e", "c", "b" ] a.sort #=> ["a", "b", "c", "d", "e"] a.sort {|x,y| y <=> x } #=> ["e", "d", "c", "b", "a"] А чтобы выводить по очереди, я имею ввиду, первое слово с буквы А, второе с буквы Я итд. Это можно сделать с помощью деления по модулю, например: если some_name%2==0, то выводим в обратном порядке, если 1, то в положенном. Помогите пожалуйста все эти домыслы объединить в код. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Люди плз не проходите мимо, реально очень нужна помощь. |
| Автор: Мохнатый 09.09.11, 03:59 |
| Используйте плиз тег code для оформления кода! Для вывода в алфавитном порядке используйте метод sort <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> a = ["beta", "alpha", "gamma"] #=> ["beta", "alpha", "gamma"] a.sort! #=> ["alpha", "beta", "gamma"] Где а - это Ваш массив с именами. Для вывода в обратном порядке используйте <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> a.reverse! #=> ["gamma", "beta", "alpha"] Правда не совсем понятно что Вам надо вывести в обратном порядке - то ли массив с именами, то ли реверснуть буквы в каждом имени. |
| Автор: LeXuS 11.09.11, 10:23 |
| Цитата Мохнатый @ Используйте плиз тег code для оформления кода! Для вывода в алфавитном порядке используйте метод sort <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> a = ["beta", "alpha", "gamma"] #=> ["beta", "alpha", "gamma"] a.sort! #=> ["alpha", "beta", "gamma"] Где а - это Ваш массив с именами. Для вывода в обратном порядке используйте <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> a.reverse! #=> ["gamma", "beta", "alpha"] Правда не совсем понятно что Вам надо вывести в обратном порядке - то ли массив с именами, то ли реверснуть буквы в каждом имени. Вроде как ясно написанно: Цитата напечатать каждое второе имя в обратном порядке |
| Автор: Мохнатый 11.09.11, 18:54 |
| С другой стороны я написал каким методом пользоваться. Строка в Ruby это такой же массив и его легко реверснуть. |