Cool C/C++

Programacion en C/C++

Home Foros
Bienvenido, Invitado
Por favor Identificarse o Registrarse.    Contraseña olvidada?

descomposicion de numeros deimales
(1 viendo) (1) Invitado
AbajoPágina: 1
TEMA: descomposicion de numeros deimales
#73
descomposicion de numeros deimales Creado el día: 21/05/2011 22:41 Karma: 0
Hola soy nuevo en la programacion en C necesito si alguien podria explicarme con detalle como funciona el siguiente programa.

Necesito hacer un programa que al introducir un numero de xxxx cifras, las descomponga.
En un foro encontre este programa que lo hace. Pero la verdad que no entiendo el procedimiento que realiza dentro del while.

{
int digito, valor;
clrscr();

scanf("%d", &valor);

while (valor > 0) {

digito = valor % 10;
valor = valor / 10;
printf("%d", digito);
}
getch();
}

Gracias.
unimo
Navegador Iniciado
Mensajes: 2
graphgraph
Usuario Offline Presiona aquí para ver el perfil de este usuario
El administrador ha deshabilitado la escritura pública.
 
#75
Re: descomposicion de numeros deimales Creado el día: 23/05/2011 18:40 Karma: 2
Saludos,

Lo que básicamente hace el programa es leer un número de teclado (un entero), extraer cada uno de sus dígitos empezando desde el último y mostrar el dígito por pantalla.

Por ejemplo si tienes el número 458, el programa extrae el 8, luego el 5 y por último el 4 y mostrará en pantalla: 854

Con la línea siguiente lee un número de teclado y lo almacena en la variable valor:

scanf("%d", &valor);


Luego comienza un ciclo while, que se repetirá mientras se cumpla la condición valor > 0, en total se ejecutará 3 veces el código que está dentro del while (una vez por cada dígito de nuestro número leído):

El operador % halla el residuo de una división, por ejemplo: 458 % 10 = 8, ya que:

458 / 10 = 45

Entonces:

458 % 10 = 458 - 45*10 = 458 - 450 = 8

Las 3 ejecuciones del while serían:

Primera ejecución:

/* valor = 458 */
 
while (valor > 0) { /* Pregunta si 458 es mayor a 0? -> SI */
digito = valor % 10; /* digito = 458 % 10 = 8 */
valor = valor / 10; /* valor = 458 / 10 = 45 */
printf("%d", digito); /* Muestra el valor de digito: 8*/
}


Segunda ejecución:

/* valor = 45 */
 
while (valor > 0) { /* Pregunta si 45 es mayor a 0? -> SI */
digito = valor % 10; /* digito = 45 % 10 = 5 */
valor = valor / 10; /* valor = 45 / 10 = 4 */
printf("%d", digito); /* Muestra el valor de digito: 5 */
}


Tercera ejecución:

/* valor =  4 */
 
while (valor > 0) { /* Pregunta si 4 es mayor a 0? -> SI */
digito = valor % 10; /* digito = 4 % 10 = 4 */
valor = valor / 10; /* valor = 4 / 10 = 0 */
printf("%d", digito); /* Muestra el valor de digito: 4 */
}


En la cuarta ejecución, preguntaría 0 > 0 -> NO, por lo cual sale del while y termina el programa.

La recomendación, es hacer el ejercicio en papel, toma un par de números de ejemplo y vas analizando que resultados obtienes con cada línea del programa, eso ayudará a que lo comprendas mejor, con el tiempo llegarás a saber que hace un programa sólo con mirarlo y analizarlo un poco.
adrianvaca
Administrador
Mensajes: 110
graph
Usuario Offline Presiona aquí para ver el perfil de este usuario
Última edición: 23/05/2011 18:41 por adrianvaca.
El administrador ha deshabilitado la escritura pública.
El conocimiento es una forma de empezar a ser libre
 
#76
Re: descomposicion de numeros deimales Creado el día: 23/05/2011 20:39 Karma: 0
Buenisimo, Muchisimas gracias loco te agradesco una banda...
unimo
Navegador Iniciado
Mensajes: 2
graphgraph
Usuario Offline Presiona aquí para ver el perfil de este usuario
El administrador ha deshabilitado la escritura pública.
 
ArribaPágina: 1
obtén los últimos mensajes directamente en tu escritorio