Как распечатать количество раз, когда определенное число появляется в массиве - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь получить число раз, когда 55 появляется в массиве.

Я пытался использовать условие, чтобы указать, что если число равно% 5, вывести 2. Я также включилперерыв.Вот что у меня есть:

def virus(array)
  index = 0
  array.length.times do
    if array[index] % 5
      p 2
      break
    end
    index = index + 1
  end
end

p virus([11, 22, 33, 44, 55, 66, 77, 66, 55, 44])

Мой вывод должен быть 2, но я получаю 2 и nil.

Ответы [ 3 ]

0 голосов
/ 22 декабря 2018

Это может быть исправлением для вашего кода, поскольку у вас есть p 2 для печати 2 вместо счетчика:

def virus(array)
  index = 0
  count = 0
  array.length.times do
    if array[index]%5 == 0
      count +=1
    end
    index = index + 1
  end
  return count
end

Вам необходимо добавить переменную count, которая будет увеличена, если элементделится на 5 (if array[index]%5 == 0) или, возможно, вам нужно проверить, равен ли элемент 55 ..

Нет необходимости разбивать, или вам не хватает некоторых элементов для подсчета.Также break возвращает nil, поэтому он распечатывается.

Наконец, вам нужно вернуть счетчик.

Создание пользовательского цикла - полезный способ обучения, но ятакже предлагаем вам взглянуть на https://ruby -doc.org / core-2.5.0 / Enumerable.html # method-i-count , просто чтобы использовать методы сборки Ruby:

array = [11, 22, 33, 44, 55, 66, 77, 66, 55, 44]
array.count { |e| e % 5 == 0 } #=> 2
0 голосов
/ 25 декабря 2018
[11, 22, 33, 44, 55, 66, 77, 66, 55, 44].count(55)
# => 2
0 голосов
/ 22 декабря 2018

Вместо p virus([11, 22, 33, 44, 55, 66, 77, 66, 55, 44]) try ставит:

def virus(array)
  index = 0
  array.length.times do
    if array[index] % 5
      puts 2
      break
    end
    index = index + 1
  end
end
puts virus([11, 22, 33, 44, 55, 66, 77, 66, 55, 44])

Возвращает только 2 ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...