Autor
|
Tema: Separar numeros en digitos individuales (Leído 157,355 veces)
|
dmacias
|
Hola a todos Soy muy nuevo en esto de la programación, justo empece hace unos dias a aprender C y ya tengo mi primer problema asi que vengo a pedir consejo o alguna pista. El libro que estoy siguiendo es el de deitel, la 4ª edicion y me quede atascado en el siguiente problema Escriba un programa que introduzca un numero de cinco digitos, que separe el numero en sus digitos individuales y que despliegue los digitos separados entre si mediante 3 espacios cada uno. [Pista: Utilice combinaciones de la division entera y el operador modulo]Lo llevo todo bastante bien por el momento, pero no se me ocurre el como puedo hacer para separar los digitos, supongo que mas que un problema con el lenguaje es de planteamiento, pero bueno. Por ahora el libro solo a tocado printf, scanf e if Decir tambien que apenas tengo estudios y los que tengo son de la edad del bronce xD asi que no seais muy malos conmigo Un saludo
|
|
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡Buenas!
Pues lo primero que tendrás que hacer es asegurarte que el número x introducido es de cinco cifras, es decir, que 10000 <= x <= 99999, si no es así, no tienes que hacer nada, ya que el problema solo te dice lo que tienes que hacer con números de cinco cifras, no con el resto.
Ahora el problema estaría en las matemáticas. Un numero es una suma de cifras entre 0 y 9 multiplicadas por potencias de 10:
- 23 = 2*10 + 3 - 146 = 1*100 + 4 * 10 + 6 - 6248 = 6 * 1000 + 2 * 100 + 4 * 10 + 8
Una vez que sabes, esto, tienes que acordarte del algoritmo de la división. dividendo = divisor * cociente + resto, y 0 < resto < divisor. (simplificando...)
si tengo un numero de tres cifras, abc, a = abc / 100, b = (abc % 100) / 10 y c = abc % 10 (recuerda que en C, si tanto el dividendo como el divisor son números enteros, la división da como resultado el cociente del algoritmo de la división entre enteros)
Ahora solo tienes que aplicar todo esto a un numero de cinco cifras.
¡Si te lías con el código avisa!
¡Saludos!
|
|
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
SoyelRobert
Desconectado
Mensajes: 46
|
el truco esta en tener en cuenta que el operador / toma el cociente de la division (parte entera) y el % toma el resto. con esto y lo que te han dicho arriba... lo tienes hecho
|
|
« Última modificación: 5 Enero 2014, 01:27 am por SoyelRobert »
|
En línea
|
getting louder!
|
|
|
dmacias
|
Muchas gracias a los dos, en cuanto os leí me puse a ello y ya está solucionado . Veo que ando flojo en mates y logica. Aqui os pego lo que ha salido #include <stdio.h> int main() { int numero, a, b, c, d, e; printf("Escribe un numero entero con 5 digitos: "); if (numero >= 10000){ if (numero <= 99999){ a = numero / 10000; b = (numero % 10000) / 1000; c = (numero % 10000) % 1000 / 100; d = ((numero % 10000) % 1000) % 100 / 10; e = (((numero % 10000) % 1000) % 100) % 10; printf("%d %d %d %d %d\n", a , b , c , d , e ); } } return 0; }
Y funcionar funciona ya puedo seguir estudiando pero no dudeis que me vereis por aqui todos los dias con dudas
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
¿Y que pasa si el número tiene quince cifras?. Casi se te acabaría el abecedario, por no hablar de la longitud del código.
Este es un caso típico para usar un bucle o una función recursiva o, como en el caso que te propongo, tomar el número como cadena e ir transformando cada uno de los dígitos:
Escribe un numero de 20 digitos como maximo: 12345678901234567890 Digitos: 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
#include <stdio.h> #define N 19 int main( void ) { int c, i, n; int digitos[N]; unsigned long long int num; printf( "Escribe un numero de %d digitos como maximo: ", N ); fflush( stdout ); num = 0; for( n = 0; n < N && (c = getchar()) != '\n'; n++ ) { digitos[n] = c - '0'; num *= 10; num += digitos[n]; } printf( "Digitos: " ); for( i = 0; i < n; ++i ) printf( " %3d,", digitos[i] ); return 0; }
Claro que si lo que queremos es exclusivamente imprimir las cifras esto irá mejor, puedes meter cuantas cifras quieras:#include <stdio.h> #define N 100 int main( void ) { int i, n; char digitos[N]; printf( "Escribe un numero de %d digitos como maximo: ", N ); fflush( stdout ); scanf ("%s",digitos); /*cuento los digitos*/ for (n=0;digitos[n]!='\0';n++); /*los imprimo*/ for (i=0;i<n;i++) printf ("%3c",digitos[i]); return 0; }
¡¡¡¡ Saluditos! ..... !!!!
|
|
« Última modificación: 5 Enero 2014, 10:44 am por leosansan »
|
En línea
|
|
|
|
dmacias
|
Supongo que todo eso que me comentas será mejor, solo tengo el problema que recien empiezo, jamas he visto #define, void, unsigned long long, fflush( stdout ), for, getchar, .........etc . Puro mandarin para mi ahora mismo jajajaja. Solo he dado 2 temas del libro, en los que se ha visto solo printf, scanf, return e if, dar tipo y valor a una variable, comentarios, %d, \n, \t, etc.... creo no haberme dejado ninguno atras. Un saludo
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
¡¡¡Sorry, muchos sorry!!! ¡¡¡¡ Saluditos! ..... !!!!
|
|
|
En línea
|
|
|
|
roderick
Desconectado
Mensajes: 1
|
en java:
public static void main(String[] args) { Scanner teclado=new Scanner(System.in); int num=0; int aumento=10; int div=1; int numeros[]=null; do { System.out.println("Ingresa un numero: (numero mayor que cero y menor de 7 digitos)"); num=teclado.nextInt(); } while (num<1 || num>999999); String num2=String.valueOf(num); numeros=new int[num2.length()]; for (int i = 0; i < num2.length() ; i++) { numeros=num%aumento/div; aumento=aumento*10; div=div*10; } for (int i = numeros.length-1; i >=0; i--) { System.out.println(""+numeros); } }
|
|
|
En línea
|
|
|
|
Beginner Web
Desconectado
Mensajes: 634
youtu.be/0YhflLRE-DA
|
Lo que exactamente pediste fue esto #include <iostream> #include <stdlib.h> #include <math.h> using namespace std; int main(){ int n=54321, exponente=4, auxiliar; for(int i=0;i<5;i++){ auxiliar=pow(10.0,exponente); cout<<n/auxiliar<<" "; n-=(n/auxiliar)*auxiliar; exponente--; } cout<<endl; system("pause"); }
Seria mas facil con pilas while(n>0){ push(p,n%10); n/=10; } while(empty(p)==false) cout<<pop(p)<<" ";
|
|
|
En línea
|
7w7
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Separar digitos de un numero
Programación C/C++
|
vaXy
|
6
|
36,382
|
1 Diciembre 2012, 16:17 pm
por cypascal
|
|
|
Funcion Separar Digitos de un numero
Programación C/C++
|
Ja_90
|
3
|
7,219
|
1 Octubre 2015, 01:21 am
por 0xFer
|
|
|
¿Cómo separar un numero binario en digitos?
Programación C/C++
|
Sherboc
|
7
|
9,873
|
24 Junio 2016, 02:30 am
por AlbertoBSD
|
|
|
Separar dígitos individuales de una cifra de 4
Programación C/C++
|
TØtti
|
2
|
8,940
|
5 Agosto 2016, 21:51 pm
por TØtti
|
|
|
Separar digitos.
Programación C/C++
|
grossgore
|
1
|
2,212
|
15 Febrero 2017, 01:16 am
por engel lex
|
|