Suma de dígitos con Ruby

Este es un pequeño programa que toma un número entero ingresado por el usuario, extrae sus dígitos uno por uno y los suma. A continuación se expone el código del programa que tan solo tiene 12 líneas.

extNum, sumDigit = 0, 0

print "Ingrese un numero entero: "
numEntero = gets().to_i

while numEntero != 0
  extNum = numEntero % 10
  numEntero /= 10
  sumDigit += extNum
end

puts "La suma de los digitos es: #{sumDigit}"

En la primera línea creamos 2 variables usando asignación múltiple, esto es posible en Ruby solo si se cumple la única regla de oro, debe existir un número de valores igual al número de variables y viceversa.

Solicitando y leyendo información ingresada por el usuario.
print "Ingrese un numero entero: "
numEntero = gets().to_i

Con la primera línea mostramos un mensaje en pantalla indicando al usuario que ingrese un número entero. En la segunda línea leemos el numero ingresado por el usuario usando gets(), luego lo debemos convertir a entero usando .to_i ya que gets lee todo como un string, y lo asignamos a la variable numEntero.

Bucle while y las operaciones matemáticas
while numEntero != 0
  extNum = numEntero % 10
  numEntero /= 10
  sumDigit += extNum
end

El bucle while va a iterar mientras que el valor de numEntero sea diferente a cero, en su interior se realizan 3 operaciones matemáticas diferentes que se explican a continuación:

* extNum = numEntero % 10: con esta operación obtenemos el último dígito de numEntero; por ejemplo, 2018 % 10 da como resultado 8 y lo almacena en la variable extNum. Esta operación se lee, módulo 10 de N.

* numEntero /= 10: esta operación es equivalente a decir numEntero = numEntero / 10 y básicamente divide el valor de numEntero entre 10, el número resultante pierde su último dígito; por ejemplo, 2018 / 10 da como resultado 201. El resultado se almacena en la variable numEntero.

sumDigit += extNum: esta operación es equivalente a decir sumDigit = sumDigit + extNum, suma el valor en la variable sumDigit con el valor en extNum y luego lo asigna de nuevo a la variable sumDigit.

Imprimiendo el resultado
puts "La suma de los digitos es: #{sumDigit}"

Imprimimos el resultado de la suma de los dígitos con la función puts y usando la interpolación #{sumDigit}.

Ejecutando el programa:
[fixedtorres@linuxero]$ ruby SumaDeDigitos.rb
Ingrese un numero entero: 781242
La suma de los digitos es: 24
[fixedtorres@linuxero]$

Al ejecutar el programa veremos algo como esto, un mensaje solicitando un número entero y el resultado de la suma de los dígitos. Para este ejemplo he ingresado el número 781242, que al sumar sus dígitos da 24.



Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *