投票轮询发生器阵列&仅循环

时间:2018-05-25 16:53:08

标签: arrays ruby loops

我需要轮询用户选举输入并仅使用数组和循环输出获胜者。我们还没有达到哈希的速度。

输入:投票10人投票。 输出:打印总投票数以及选举获胜者和领带破坏者。

Example: 
  Election candidates are: Tom, James, Anne

  Vote #1: <Anne>
  Vote #2: <Anne>
  Vote #3: <James>
  Vote #4: <Tom>
  Vote #5: <Tom>
  Vote #6: <Anne>
  Vote #7: <Anne>
  Vote #8: <James>
  Vote #9: <James>
  Vote #10: <Anne>

 RESULTS....

  Vote Summary:
  Anne - 5 vote(s)
  James - 3 vote(s)
  Tom - 2 vote(s)

  WINNER: Anne!

我正在考虑使用times方法用候选者的用户输入填充所有投票,并使用数组来存储候选人。

candidates = "Iron Man", "Wonder Women", "Storm"

puts "Our Election Candidates this year are: #{candidates}"

10.times do |i|
print "Vote #{i+1}"
vote[i] = gets.chomp.upcase.to_i
end

但是,我不知道如何找到每位候选人的总票数?任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

我不知道候选人是如何存储的,但如果我理解了你的问题,也许这会有所帮助。

candidates = [["Tom", 0], ["James", 0], ["Anne", 0]]

def update_votes(candidates, index)
  candidates[index][1] += 1
end

10.times do
  puts "Vote your candidate:"
  candidates.each_with_index {|c, i| puts "#{i}-#{c[0]}"}
  index = gets.to_i
  update_votes(candidates, index)
end

p results = candidates.sort_by{|_name, votes| -votes}