|
0 / 0 / 0
Регистрация: 14.01.2015
Сообщений: 8
|
||||||
Цикл для массива16.12.2015, 03:25. Показов 5201. Ответов 9
Метки нет (Все метки)
Привет, форумчане. Начал изучение Ruby, стараюсь закреплять пройденное задачками, попалась одна, никак не могу понять где я ошибся.
Задание следующее: Программа просит ввести сколько угодно слов (пока не нажмешь энтер на пустой строке), а затем выводит их в алфавитном порядке. Принцип я понимаю: нужен массив, в который будут записываться вводимые слова, цикл, который будет их туда записывать, условие выхода из цикла и метод сортировки. Вот мой кусок кода, поясните почему не работает, пожалуйста. Возможно проблема в строке с методом push, но я по разному пробовал записать, все равно не работало. После ввода любого значения и нажатия энтер программа закрывается.
0
|
||||||
| 16.12.2015, 03:25 | |
|
Ответы с готовыми решениями:
9
Почему не работает цикл while для заполнения и do while для вывода массива? Цикл для массива
|
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||||
| 16.12.2015, 08:15 | ||||||||
mass сначала трактуется как массив слов, потом как строка, потом опять как массив. Ну или в том, что ввод строки у тебя происходит только один раз.btw
0
|
||||||||
|
0 / 0 / 0
Регистрация: 14.01.2015
Сообщений: 8
|
||||||||
| 16.12.2015, 20:28 [ТС] | ||||||||
Ах да. С таким кодом программа делает следующее: Просит ввести слова, я ввожу одно, нажимаю энтер, она закрывается с ошибкой (которую не знаю как прочитать, ведь закрывается моментально )
0
|
||||||||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||||||||||||||||
| 16.12.2015, 20:49 | ||||||||||||||||||||
Сообщение было отмечено MrJinn как решение
Решениеgets возвращает nil.
gets?
Какую могу дать подсказку: если ты присваиваешь переменной строку — то эта переменная становится строкой, а не массивом, и не важно, что до этого ты присваивал ей массив. Попробуй еще в разных местах своей программы поставить отладочную печать содержимого mass, это сможет многое прояснить:
2
|
||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 14.01.2015
Сообщений: 8
|
||||||
| 16.12.2015, 22:55 [ТС] | ||||||
|
Ур-ра, товарисчи! Оно живое! Единственное что я не понял это как передать nil. В гугле вроде написано что для винды это Ctrl+Z, но я получаю только ^Z и программа закрывается при нажатии энтер. А с пустой строкой все работает, как в задачке) Прикрепляю рабочий код если кто тоже заинтересуется. Наверное можно это решить проще, но главное что работает.
Спасибо большое, Nameless One за советы, благодаря ним и додуплил. P.S. Безумно рад что работает, хотя это только начало)
0
|
||||||
|
the hardway first
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
|
||||||
| 16.12.2015, 23:23 | ||||||
1
|
||||||
|
0 / 0 / 0
Регистрация: 14.01.2015
Сообщений: 8
|
|
| 17.12.2015, 00:14 [ТС] | |
|
Спасибо, на радостях не обратил внимание на лишние строки)
system убрал, запускаю через консоль
0
|
|
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||||||||
| 17.12.2015, 07:10 | ||||||||||||
Ctrl+Z, затем Enter (ещё в гугле пишут что-то про F6, но я сейчас не могу проверить). В других системах — просто Ctrl+D с начала новой строки.Условие str != '' or nil эквивалентно str != ('' or nil), что, в свою очередь, эквивалентно str != ''. Если ты хочешь отлавливать ещё и EOF, то условие должно быть примерно таким: str != '' && str != nil.Только с твоим кодом это опять будет вызывать ошибку. Когда gets получит EOF, он вернёт nil. Далее, будет попытка вызвать несуществующий метод #chomp у nil:NilClass, что приведёт к исключению.Один из вариантов решения (возможно, не самый лучший) — просто подавить исключение с помощью rescue:
1
|
||||||||||||
|
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 1
|
||||||
| 05.10.2016, 19:35 | ||||||
|
все намного проще ведь
0
|
||||||
|
the hardway first
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
|
|
| 05.10.2016, 21:57 | |
|
0
|
|
| 05.10.2016, 21:57 | |
|
Помогаю со студенческими работами здесь
10
Цикл для вывода массива Цикл для сложения элементов целочисленного массива
Куда вставить цикл for для количества массива?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|