Autor
|
Tema: Como almacenar un numero de 10 cifras (Leído 4,914 veces)
|
Caster
|
Pues esa es la duda, he empezado con un problema de los que me habeis dejado en otro post que he crado preguntando por algunos problemas y ya he elegido uno que me parece que pensando un poco puedo llegar a sacarlo, y ese es el primer problema que se me presenta, que tipo de variable puedo usar para almacenar un numero de 10 cifras, he probado de las siguientes maneras: int x;
long int x;
long long int x;
unsigned long long int x;
Y ninguna me ha servido, la unica forma que se me ocurre es utilizando un array, pero aun no he llegado a leer sobre ellos y pereferia evitarlos. En el problema se me presenta que ese numero lo contiene un fichero, pero como tampoco se manejar ficheros, pues no puedo hacerlo de esa manera y creo que se puede hacer como quiero yo Saludos
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
y ya he elegido uno que me parece que pensando un poco puedo llegar a sacarlo, y ese es el primer problema que se me presenta, que tipo de variable puedo usar para almacenar un numero de 10 cifras, he probado de las siguientes maneras: Y ninguna me ha servido, la única forma que se me ocurre es utilizando un array, El número que aparece en el ejemplo no está en un fichero, es el número. Si usaramos otros lenguajes podríamos manejarlo tal como viene, pero en C el tamaño-en cifras- es muy limitado, a no ser que uses librerias para el manejo de números grandes, que las hay. Te propondría que intentes el de la suma todos los números naturales menores que mil que sean múltiplos de 3 ó 5. Verás lo que puede dar de sí un ejemplo tan sencillo
|
|
« Última modificación: 25 Octubre 2012, 19:41 pm por leosansan »
|
En línea
|
|
|
|
Caster
|
Entonces que hago?
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Entonces que hago?
Reedite el post anterior, léelo o cambia simplemente de ejercicio.
|
|
|
En línea
|
|
|
|
avesudra
Desconectado
Mensajes: 724
Intentando ser mejor cada día :)
|
Debes usar los tipos definidos en: #include <stdint.h>
Y los especificadores de formato definidos en: #include <inttypes.h>
Aquí una referencia de stdint.hAquí una referencia de inttypes.hCódigo de ejemplo: #include <stdint.h> #include <inttypes.h> #include <stdio.h> int main( int argc , char **argv) { uint64_t numero = 0; printf("Introduzca un numero:"); //Aquí se usa %llu , por que en la referencia pone. //#define SCNu64 'llu' //La u es para los sin signo , la i y la d para los enteros con signo //Aquí se usa %llu , por que en la referencia pone. //#define PRIu64 'llu' //La u es para los sin signo , la i y la d para los enteros con signo printf("Tu numero es %llu", numero ); return 0; }
En la referencia de los especificadores de formato: - PRI significa PRINTF, es decir , que eso es para imprimir el numero , que lleve i o d , depende de la que quieras usar.
- SCN significa SCANF , es decir, que sirve para introducir el numero , y lo mismo que arriba , puedes usar i o d.
Para lo de los archivos , pone esto en el código fuente de inttypes.h : 00074 *// The fprintf() macros for signed integers are: 00075 *// PRIdN PRIdLEASTN PRIdFASTN PRIdMAX PRIdPTR 00076 *// PRIiN PRIiLEASTN PRIiFASTN PRIiMAX PRIiPTR 00077 *// 00078 *// The fprintf() macros for unsigned integers are: 00079 *// PRIoN PRIoLEASTN PRIoFASTN PRIoMAX PRIoPTR 00080 *// PRIuN PRIuLEASTN PRIuFASTN PRIuMAX PRIuPTR 00081 *// PRIxN PRIxLEASTN PRIxFASTN PRIxMAX PRIxPTR 00082 *// PRIXN PRIXLEASTN PRIXFASTN PRIXMAX PRIXPTR 00083 *// 00084 *// The fscanf() macros for signed integers are: 00085 *// SCNdN SCNdLEASTN SCNdFASTN SCNdMAX SCNdPTR 00086 *// SCNiN SCNiLEASTN SCNiFASTN SCNiMAX SCNiPTR 00087 *// 00088 *// The fscanf() macros for unsigned integers are: 00089 *// SCNoN SCNoLEASTN SCNoFASTN SCNoMAX SCNoPTR 00090 *// SCNuN SCNuLEASTN SCNuFASTN SCNuMAX SCNuPTR 00091 *// SCNxN SCNxLEASTN SCNxFASTN SCNxMAX SCNxPTR Si quieres hacerlo con archivos te dejo este ejemplo: #include <stdint.h> #include <inttypes.h> #include <stdio.h> int main( int argc , char **argv) { uint64_t numero = 0; FILE * archivo; archivo = fopen("numero.txt","r"); // Abrimos un archivo para leerlo que debe contener el número. /* The fscanf() macros for unsigned integers are: SCNoN SCNoLEASTN SCNoFASTN SCNoMAX SCNoPTR SCNuN SCNuLEASTN SCNuFASTN SCNuMAX SCNuPTR SCNxN SCNxLEASTN SCNxFASTN SCNxMAX SCNxPTR */ //Nosotros vamos a usar SCNu64 , N se sustituye por uno de los numeros de bits. fscanf(archivo , "%llu", &numero ); printf("El numero del archivo es %llu", numero ); return 0; }
Si necesitas usar más de 64 bits , tendrás que recurrir a una librería externa a las estándares, aunque también es muy portable, es GMP , si quieres compilarla algún día, este verano puse un tutorial que estará rulando por ahí. ¡Un saludo! PD: tu problema igual era que no utilizabas el especificador de formato correcto.
|
|
« Última modificación: 25 Octubre 2012, 21:50 pm por avesudra »
|
En línea
|
Regístrate en
|
|
|
Caster
|
El ejercicio que me dices leosansan es de Project Euler si no recuerdo mal, primero prefiero acabar con este porque creo que es bastante facilito y ademas ya lo empece y ya avance un poco, mirare las librerias stdint y inttypes. Muchas gracias por responder
Saludos
|
|
|
En línea
|
|
|
|
avesudra
Desconectado
Mensajes: 724
Intentando ser mejor cada día :)
|
He modificado el post de arriba y he puesto un ejemplo de código con archivos.
¡Un saludo!
|
|
|
En línea
|
Regístrate en
|
|
|
Caster
|
Con archivos no puedo porque no he leido nada de nada sobre ello, pero muchas gracias de todas formas.
Saludos
|
|
|
En línea
|
|
|
|
flony
Desconectado
Mensajes: 584
|
hola es solo una idea...pero usar string y leer el numero como una cadena seria una opcion, la otra seria usar vectores y leer cada digito del numero..la sulucion es basicamente la misma pero funciona, ya se lo he visto usar a un flaco, si quieres te paso el video donde habla de ese tema
|
|
|
En línea
|
si un problema no tiene solucion entonces no es un problema...es algo inevitable
|
|
|
cypascal
|
Si, yo lo haría usando un vector, de modo que no tengas que llamar a ninguna biblioteca. Por contra, tendrás que implementar las operaciones básica para el tipo de dato que uses.
Un Saludo!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Como almacenar ficheros (p.ej imagenes) en un sitio web
PHP
|
lnvisible
|
4
|
2,971
|
1 Noviembre 2012, 11:33 am
por lnvisible
|
|
|
Constructor (String numero) copia cifras a un Array. AYUDA PORFAVOR
Java
|
chriwasch
|
0
|
1,789
|
7 Enero 2014, 13:32 pm
por chriwasch
|
|
|
como almacenar correctamente unsigned *char a MSQL (Almacenar una imagen)
Programación C/C++
|
pedromigl010
|
1
|
2,836
|
15 Octubre 2014, 12:17 pm
por eferion
|
|
|
Assembler programa que sume, reste, multiplique numero de 2 cifras.
ASM
|
AnubisQuero
|
0
|
7,708
|
12 Febrero 2016, 18:49 pm
por AnubisQuero
|
|
|
Las cifras que tiene un numero
« 1 2 »
Programación C/C++
|
mikel-mb
|
19
|
8,270
|
13 Noviembre 2017, 13:39 pm
por mikel-mb
|
|