Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: ka0s en 25 Noviembre 2013, 19:39 pm



Título: [Ruby] Sumar elementos de un array
Publicado por: ka0s en 25 Noviembre 2013, 19:39 pm
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
  1. puts "Ingrese 5 numeros separados por un espacio"
  2. numeros = gets.chomp
  3. numeros = numeros.split (" ")
  4. suma = 0
  5. numeros.each do |num|
  6. suma = suma + num
  7. puts suma
  8. 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:

Citar
D:/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!!


Título: Re: [Ruby] Sumar elementos de un array
Publicado por: Shell Root en 25 Noviembre 2013, 20:00 pm
Es porque cuando pides el ingreso de los números,
Código
  1. numeros = gets.chomp

Los toma como si fuera string, tienes que convertir los valores a enteros,..., por ejemplo:
Código
  1. #!/usr/local/bin/ruby -w
  2.  
  3.  puts "Ingrese 5 numeros separados por un espacio"
  4.  numeros = "1 2 3 4 5 6 7 8 9"
  5.  numeros = numeros.split(" ")
  6.  suma = 0
  7.  numeros.each do |num|
  8.    suma += num.to_i
  9.  end
  10.  
  11.  puts suma


Título: Re: [Ruby] Sumar elementos de un array
Publicado por: ka0s en 25 Noviembre 2013, 20:32 pm
Es porque cuando pides el ingreso de los números,
Código
  1. numeros = gets.chomp

Los toma como si fuera string, tienes que convertir los valores a enteros,..., por ejemplo:
Código
  1. #!/usr/local/bin/ruby -w
  2.  
  3.  puts "Ingrese 5 numeros separados por un espacio"
  4.  numeros = "1 2 3 4 5 6 7 8 9"
  5.  numeros = numeros.split(" ")
  6.  suma = 0
  7.  numeros.each do |num|
  8.    suma += num.to_i
  9.  end
  10.  
  11.  puts suma

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

Saludos!!