2011-04-13 8 views
5

De Cay Horstmann de "C++ para todo el mundo" Capítulo 4: Buclesnecesita ayuda con C++ Loops Ejercicio

escribir un programa que se suma la suma de todos los dígitos impares de n. (Por ejemplo, si n es 32677, la suma sería 3 + 7 + 7 = 17)

No sé cómo hacer que la computadora "ver" los números como los separan

Respuesta

8

n % 10 tiene la valor del dígito de uno. Puedes averiguarlo desde allí ¿verdad?

+0

Sí lo he descubierto. Simplemente no pensé en dividir el número por 10 después – Alex

3

Aquí hay una pista. C++ tiene el operador de módulo %. Producirá el resto cuando dos números se dividen juntos. Así que si lo que quería saber el último dígito de un número que es mayor que 10 Me módulo 10 y obtener el resultado

int lastDigit = number % 10; 
3

El último dígito de un número entero en base 10 i es igual a i % 10. (Como referencia, % es el operador de módulo, básicamente devuelve el resto de dividir el número de la izquierda por el derecho.)

Así que ahora tiene el último dígito. Una vez que lo haya hecho, agréguelo al total acumulado que está manteniendo, divida i por 10 (desplazando efectivamente los dígitos hacia abajo en un lugar) o en su caso 100 (dos lugares) y comience desde el principio. Repita hasta i == 0.

0

Las personas de aquí no le dan la respuesta a su ejercicio, sino que le brindan consejos para que pueda encontrar la respuesta por su cuenta y, lo que es más importante, entenderla.

Para empezar, las siguientes operaciones aritméticas le ayudarán a:

loop: 
    right_most_digit = n % 10 
    n = n/10 
end_loop 
Cuestiones relacionadas