Muy buenas, soy nuevo en C++ asi que me estaba leyendo el libro de deitel (9novena edición) pero me ha mandado a realizar un ejercicio en la que no logro comprender como hacerlo. El siguiente post es lo mismo que yo busco y además le brindan una solución: http://foro.elhacker.net/programacion_cc/separar_numeros_en_digitos_individuales-t406137.0.html
Simplemente es separar cada numero o dígito de su cifra entera (1234 a 1-2-3-4). Yo vi el algoritmo que ponen allí en ese topic, pero no logro comprenderlo o el por qué. Es decir, yo entiendo sobre " C|D|U" pero no sobre lo otro.
Asi que si alguien tiene la bondad de brindarme otra explicación distinta a la que dan allí, estaré agradecido. Gracias.
Es bastante simple en realidad:
Si n es un numero entero, entonces (n % 10) es su ultima cifra.
Ejemplo:
1235 % 10 == 5
12 % 10 == 2
Y (n /10) es el numero menos el ultimo digito (puesto que la operacion da entero)
1235 / 10 == 123
12 / 10 == 1
Entonces esto este codigo muestra los 6 digitos de n:
int n = 123456;
while (n != 0) {
cout << n % 10 << endl;
n = n/10;
}
Podes ver el ejemplo funcionando aca:
http://ideone.com/ELLiRB (http://ideone.com/ELLiRB)
ah vale. Aún no uso bucles, asi que la hice asi
int a,b,c,d;
int valor;
main()
{
cout<<"introduce un valor de 4 cifras: "<<endl;
cin>>valor;
a = valor / 1000; // primer digito
b = (valor / 100) % 10; // segundo digito
c = (valor / 10) % 10; // tercer digito
d = valor % 10; // ultimo digito
cout<<a<<b<<c<<d;
return 1;
}
Muchas gracias.