4 votes

Comment multiplier les éléments d'un tableau en utilisant array#each ?

J'essaie d'écrire une méthode qui prend en entrée un tableau d'entiers et renvoie leur produit. Par exemple, j'essaie d'écrire une méthode qui prend en entrée un tableau d'entiers et retourne leur produit :

product([1,2,3])    # returns 6

Je dois le faire en utilisant Array#each et non la méthode d'injection. C'est ce que j'ai trouvé, mais cela semble incorrect :

def product(array)
  final = 0.0
  array.each do |i|
    final *= i
  end
  return final
end

Par ailleurs, comment modifier cette méthode pour qu'elle renvoie le produit de tous les entiers impairs du tableau, de telle sorte que

product([1,2,3])     # returns 3, because 2 is even

product([0,-1,-10])  # returns -1, because 0 and -10 are even

10voto

David Robles Points 4312

Comme l'a dit Ramon, il suffit d'initialiser final à 1.0 :

def product(array)
  final = 1.0
  array.each { |i| final *= i }
  final
end

Cependant, en langage idiomatique Ruby :

[1, 2, 3].inject(:*)

5voto

Darrin Points 41
def find_product(x)
  return x.inject(&:*)
end

x = [5, 6, 7, 10, 15, 18, 32]

find_product(x)

1voto

Ahmad Hasan Khan Points 106
arr = [1,2,3,4,5]

Première

for i in arr
 a=i
  for j in arr
   a *=j
  end
 p a
end

Deuxième

for i in arr
  p product = arr.inject(i , :*)
end

0voto

Paul Yin Points 1625
def product(array)
  final = 1.0
  array.each do |i|
    final *= i
  end
  final
end

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X