[C con Clase] Mostrar los dígitos de un entero de 5 dígitos

Davidson, Steven srd4121 en njit.edu
Jue Ago 8 04:42:38 CEST 2013


Hola Humberto,

2013/8/7 Humberto Boone Abdo <h.boone en outlook.com>

> Gracias, ya lo he podido hacer y al parecer si me funcionó. Aquí el
> código. Entonces lo que logré entender es que cuando se divide el entero
> entre el número (1, 10, etc.) se almacena en la variable sólo lo que esta
> antes que el punto porque es del tipo 'int' y sólo pude manejar enteros.
> Después en la parte de dígitos finales
>

Hasta cierto punto, tienes razón. Realmente se trata de una división entre
enteros y por lo tanto, el resultado es un entero. Es decir, la operación
es quien realiza esta división especial, entre enteros, mientras que la
división entre números de coma flotante (o punto flotante) es otra
operación diferente.

sucede algo similar aquí según yo, el 10 hace que se mueva el punto hasta
> que sólo quede un dígito después del punto, que ese dígito sería el residuo
> y  éste es el dígito que ocupa la ubicación del entero.
>

Correcto; así es como funciona en las matemáticas.

Otra duda, leí por ahí que en los lenguajes de programación el 0 es como sí
> fuera uno (o lo primero), entonces yo al primer dígito le puse el nombre a
> su variable de d0 o df0 no sé si esto esté bien.
>
>
Casi. Lo que estás comentando es cuando usemos arrays (o a veces llamados
"arreglos" o "vectores"). El índice del primer elemento en un array es
SIEMPRE 0 (cero). Sin embargo, en tu caso, no estás usando arrays, sino
meras variables. Puedes usar cualquier nombre válido para una variable; el
hecho de que tenga un 0 o no altera que sigue siendo una variable.


En cuanto al código fuente que escribes, podrías hacer uso del valor
guardado en una variable anterior. Por ejemplo,

int d0 = entero; // 42339

int d1 = d0 / 10; //4233

int d2 = d1 / 10; //423
...

Intercalando las operaciones posteriores y reescribiendo lo anterior,
tenemos,

int df0 = entero % 10; // Residuo 9

int d1 = entero / 10; //4233
int df1 = d1 % 10; // Residuo 3

int d2 = d1 / 10; //423
int df2 = d2 % 10; // Residuo 3
...

Viendo que 'd1', 'd2', 'd3', etc. se basan en 'entero', podríamos
reescribir lo anterior reusando esta misma variable; esto es,

int df0 = entero % 10; // Residuo 9

entero /= 10; //4233
int df1 = entero % 10; // Residuo 3

entero /= 10; //423
int df2 = entero % 10; // Residuo 3
...


Claro está, podríamos usar un array para ir guardando cada dígito en su
lugar (del último elemento al primero), y nos ahorraríamos definir
explícitamente las 5 variables, 'df0', 'df1', etc.. De hecho, esto nos
permitiría usar un bucle 'while' para ir guardando cada dígito, mientras
"recortamos" 'entero'. El patrón es simplemente,

entero /= 10;
digito = entero % 10;


Espero que esto aclare un poco más el tema.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130807/3c0ed5bc/attachment-0001.html>


Más información sobre la lista de distribución Cconclase