Separar dígitos individuales de una cifra de 4

Iniciado por TØtti, 5 Agosto 2016, 20:32 PM

0 Miembros y 1 Visitante están viendo este tema.

TØtti

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.

ivandiaz

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

TØtti

ah vale. Aún no uso bucles, asi que la hice asi

Código (cpp) [Seleccionar]
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.