Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: TØtti en 5 Agosto 2016, 20:32 PM

Título: Separar dígitos individuales de una cifra de 4
Publicado por: TØtti en 5 Agosto 2016, 20:32 PM
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.
Título: Re: Separar dígitos individuales de una cifra de 4
Publicado por: ivandiaz en 5 Agosto 2016, 20:49 PM
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)
Título: Re: Separar dígitos individuales de una cifra de 4
Publicado por: TØtti en 5 Agosto 2016, 21:51 PM
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.