Foro de elhacker.net

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:

Código:
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
  1. int a,b,c,d;
  2. int valor;
  3.  
  4. main()
  5. {
  6.    cout<<"introduce un valor de 4 cifras: "<<endl;
  7.    cin>>valor;
  8.  
  9.    a = valor / 1000; // primer digito
  10.    b = (valor / 100) % 10; // segundo digito
  11.    c = (valor / 10) % 10; // tercer digito
  12.    d = valor % 10; // ultimo digito
  13.  
  14.    cout<<a<<b<<c<<d;
  15.  
  16.    return 1;
  17. }
  18.  

Muchas gracias.