[Ruby] Sumar elementos de un array

Iniciado por ka0s, 25 Noviembre 2013, 19:39 PM

0 Miembros y 1 Visitante están viendo este tema.

ka0s

Hola, desde ya muchas gracias por leer.
Estoy aprendiendo Ruby y no puedo creer que me estoy volviendo loco y no encuentro el error o lo que pasa con esto.
Quiero sumar los elementos de una array para probar EACH pero me arroja error.

Este es mi código:

Código (ruby) [Seleccionar]
puts "Ingrese 5 numeros separados por un espacio"
numeros = gets.chomp
numeros = numeros.split (" ")
suma = 0
numeros.each do |num|
suma = suma + num
puts suma
end


Me estoy volviendo loco, probé de mil maneras distintas, incluso poniendo += para hacer más corto el código pero no encuentro como hacerlo.
Lo que me arroja el intérprete es:

CitarD:/Users/Administrador/Desktop/probando.rb:6:in `+': String can't be coerced int
o Fixnum (TypeError)
        from D:/Users/Administrador/Desktop/probando.rb:6:in `block in <main>'
        from D:/Users/Administrador/Desktop/probando.rb:5:in `each'
        from D:/Users/Administrador/Desktop/probando.rb:5:in `<main>'

Es una tontería seguro, pero no puedo aprender ni seguir adelante :(.

Desde ya muchas gracias!!

Shell Root

#1
Es porque cuando pides el ingreso de los números,
Código (ruby) [Seleccionar]
numeros = gets.chomp

Los toma como si fuera string, tienes que convertir los valores a enteros,..., por ejemplo:
Código (ruby,8) [Seleccionar]
#!/usr/local/bin/ruby -w

 puts "Ingrese 5 numeros separados por un espacio"
 numeros = "1 2 3 4 5 6 7 8 9"
 numeros = numeros.split(" ")
 suma = 0
 numeros.each do |num|
   suma += num.to_i
 end
 
 puts suma
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

ka0s

Cita de: @shellroot en 25 Noviembre 2013, 20:00 PM
Es porque cuando pides el ingreso de los números,
Código (ruby) [Seleccionar]
numeros = gets.chomp

Los toma como si fuera string, tienes que convertir los valores a enteros,..., por ejemplo:
Código (ruby,8) [Seleccionar]
#!/usr/local/bin/ruby -w

 puts "Ingrese 5 numeros separados por un espacio"
 numeros = "1 2 3 4 5 6 7 8 9"
 numeros = numeros.split(" ")
 suma = 0
 numeros.each do |num|
   suma += num.to_i
 end
 
 puts suma


Ufff, que tontería era!!!
MUCHISIMAS GRACIAS POR RESPONDER Y POR LA RÁPIDEZ!!

Saludos!!