Suma de dígitos con C++

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 19 líneas.

#include <iostream>
using namespace std;

int main() {
    int extNum, sumDigit = 0, numEntero;

    cout << "Ingrese un numero entero: ";
    cin >> numEntero;

    while(numEntero != 0) {
        extNum = numEntero % 10;
        numEntero /= 10;
        sumDigit += extNum;
    }

    cout << "La suma de los digitos es: " << sumDigit << endl;

    return 0;
}

Nota: varios de los términos que aparecen aquí, tales como cout, #include, using namespace y la función main, entro otros, ya están documentados en Hola MundoAquí hablaremos sobre cómo funciona el código.



Declarando variables
int extNum, sumDigit = 0, numEntero;

En este fragmento de código creamos 3 variables de tipo int, pero solo la variable sumDigit se inicializa con 0. En C++, si las variables que son de tipo numérico (float, int, long, short y byte) no se inicializan, entonces se inicializan con valores indeterminados que conducen a errores cuando se realizan operaciones aritméticas.

Solicitando y leyendo información ingresada por el usuario
cout << "Ingrese un numero entero: ";
cin >> numEntero;

Con la primera línea imprimimos un mensaje en pantalla solicitando al usuario un número entero usando el objeto cout. En la segunda línea leemos el número ingresado por el usuario usando el objeto cin y se asigna a la variable numEntero para su posterior procesamiento.

Bucle while(), procesando la información
while(numEntero != 0) {
    extNum = numEntero % 10;
    numEntero /= 10;
    sumDigit += extNum;
}

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 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.

Ejecutando el programa
cout << "La suma de los digitos es: " << sumDigit << endl;

Por último mostramos el resultado de la suma de los dígitos con el objeto cout y un salto de línea con endl.

Ejecutando el programa:
[fixedtorres@linuxero]$ ./SumaDeDigitos
Ingrese un numero entero: 1273901
La suma de los digitos es: 23
[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 1273901, que al sumar sus dígitos da 23.



Añadir un comentario

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