Простая задача гистограммы с использованием массивов - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь решить следующую задачу, которая заключается в создании программы для гистограмм:

"Напишите программу, которая рисует гистограммы. Она должна: 1. Запросить у пользователя список чисел.Пользователь вводит их через запятую, например, 10,4,2,7,5,1 2. Напечатайте горизонтальную гистограмму чисел по порядку 3. Бары должны состоять из '-'

Например,

10,4,2,7
----------
----
--
-------

Примечание: вы можете предполагать, что пользователь будет вводить только целые числа, разделенные запятыми без пробелов. "

Это задача, которая входит в учебное пособие по массивам, поэтому я считаю, что цель состоит в том, чтобы использовать массив.

Я хочу преобразовать входные данные пользователя в массив,переберите каждое число и напечатайте соответствующее количество тире для каждого числа.Однако я не могу понять, как это сделать.Любой совет будет оценен.

Ответы [ 2 ]

3 голосов
/ 13 марта 2019

Поскольку это вызов, я не буду давать вам ответ в явном виде, а приведу некоторые подсказки, которые помогут вам в решении этого вопроса.

Для начала ваша программа принимает значение, разделенное запятыми string:

10,4,2,7,5,1

Это можно преобразовать в массив элементов с помощью метода String#split, а затем преобразовать каждый элемент в целое число, вызвав String#to_i для каждого элемента.

array = '10,4,2,7,5,1'.split(',')
array.map! { |item| item.to_i }

Вышеуказанные два шага дадут вам массив чисел .

Вызов each для массива позволит вам перебрать через массив, передаваяномер блока, заданного методом each:

array.each do |num|
  # print_dashes(num)
end

Печать штрихов проста.Существует два простых способа печати объектов на вашем терминале: print и puts Каждый вызов print x будет печатать x в одной строке Каждый вызов puts x будет печатать x на новой строке

Строка может быть умножена для расширения самой себя.Например:

dashes = '-' * 10
print(dashes)
0 голосов
/ 13 марта 2019
gets.split(","){|x| puts "-" * Integer(x, exception: false)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...