Autor
|
Tema: Acceder de forma individual a cada digito de un número entero(sin sprintf) (Leído 2,677 veces)
|
DanielPy
Desconectado
Mensajes: 145
|
Hola a todos. Esta es la manera que estoy usando para poder acceder de forma individual a cada unos de los dígitos de un número, alguien sabe si se puede hacer lo mismo pero a mano o sea sin usar sprintf.- #include <stdio.h> #include <stdlib.h> #include <limits.h> #include <ctype.h> int main(void) { int numero, i, longitud, ok = 0, ch; char cad[11]; do{ printf("\n Ingresa un numero entero(maximo %d)....: ", INT_MAX ); ok = scanf("%d", &numero ) == 1 && numero >= 1 && numero <= INT_MAX ; while ((ch = getchar()) != EOF && ch != '\n'); }while(!ok); for(i = 0; i < longitud; i++){ printf("\n Posicion[%d] %c ", i +1, cad [i ]); } return 0; }
Bueno eso es todo.- Un saludo. Daniel
|
|
« Última modificación: 21 Noviembre 2013, 19:54 pm por DanielC# »
|
En línea
|
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
xaps
Desconectado
Mensajes: 157
|
Para obtener el último dígito de un número entero (N) puedes hacer: int N; //Obtenemos el valor de N int numero = N%10; N = N/10;
Lo que estás haciendo aquí es obtener el último dígito de N aplicándole módulo 10. Después, acortamos ese número una cifra por la derecha, eliminando el número que ya hemos separado. Si este fragmento de código se coloca dentro de un bucle, consigues obtener todos los dígitos de un número N.
|
|
|
En línea
|
"The programmers of tomorrow are the wizards of the future" - Gave Newel
|
|
|
DanielPy
Desconectado
Mensajes: 145
|
Hola xaps. Excelente por lo menos es un comienzo, lo que resta es saber cómo acceder Por ejemplo al 3 teniendo el siguiente número 12345 sin pasar por el resto, Si lo tenes por favor ayudame.- #include <stdio.h> int main(void) { int numero, digito = 0; numero = 125483; printf("\n El numero es: %d -- ", numero ); while(numero != 0){ digito = numero%10; numero = numero/10; } return 0; }
Un saludo. Daniel
|
|
« Última modificación: 21 Noviembre 2013, 19:53 pm por DanielC# »
|
En línea
|
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
lo que resta es saber cómo acceder Por ejemplo al 3 teniendo el siguiente número 12345 sin pasar por el resto Lo mejor es obtener cada uno de los dígitos mediante división y modulo como ya te comento xaps, esos dígitos los almacenas en un array para procesarlos después pero si lo piensas un poco estas haciendo de forma manual la misma operación que sprintf. En cuanto al uso de esa función si el numero esta garantizado a ser positivo y lo imprimes con "%d" puedes ahorrarte la llamada a strlen utilizando: longitud = sprintf(cad , "%d", numero );
Ya que el valor de retorno de sprintf es el numero de caracteres de la cadena generada sin contar el '\0'. Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
DanielPy
Desconectado
Mensajes: 145
|
Hola. muchas gracias a los 2 por la ayuda, me quedare con sprintf, en cuanto a lo que decís que estoy haciendo lo mismo que con sprintf, eso lo tengo claro solo que me gusta saber cómo funcionan por dentro ciertas funciones.- Un saludo. Daniel
|
|
« Última modificación: 21 Noviembre 2013, 19:53 pm por DanielC# »
|
En línea
|
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[AYUDA] Warning: sprintf() [function.sprintf]: Too few arguments
PHP
|
Rudy21
|
3
|
5,473
|
30 Julio 2008, 15:51 pm
por Ertai
|
|
|
Calculado el dígito dos mil billones del número pi
« 1 2 »
Noticias
|
wolfbcn
|
15
|
6,079
|
19 Septiembre 2010, 15:26 pm
por Karcrack
|
|
|
Detectar si un numero es entero o no
« 1 2 »
Programación C/C++
|
Caster
|
11
|
6,244
|
2 Noviembre 2012, 13:37 pm
por BatchianoISpyxolo
|
|
|
Recorrer integer dígito por dígito
Programación C/C++
|
Daor02
|
3
|
13,197
|
20 Junio 2016, 16:54 pm
por tincopasan
|
|
|
Cómo borrarse de algunos servicios de Google de forma individual
Noticias
|
wolfbcn
|
0
|
1,260
|
19 Enero 2017, 21:20 pm
por wolfbcn
|
|