elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como almacenar un numero de 10 cifras
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Como almacenar un numero de 10 cifras  (Leído 4,816 veces)
Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Como almacenar un numero de 10 cifras
« en: 25 Octubre 2012, 19:22 pm »

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:

Código
  1. int x;
Código
  1. long int x;
Código
  1. long long int x;
Código
  1. 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 Desconectado

Mensajes: 1.314


Ver Perfil
Re: Como almacenar un numero de 10 cifras
« Respuesta #1 en: 25 Octubre 2012, 19:39 pm »

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,
Citar
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


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: Como almacenar un numero de 10 cifras
« Respuesta #2 en: 25 Octubre 2012, 19:40 pm »

Entonces que hago?
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Como almacenar un numero de 10 cifras
« Respuesta #3 en: 25 Octubre 2012, 19:42 pm »

Entonces que hago?
Reedite el post anterior, léelo o cambia simplemente de ejercicio.
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Como almacenar un numero de 10 cifras
« Respuesta #4 en: 25 Octubre 2012, 21:26 pm »

Debes usar los tipos definidos en:
Código
  1. #include <stdint.h>
Y los especificadores de formato definidos en:
Código
  1. #include <inttypes.h>

Aquí una referencia de stdint.h
Aquí una referencia de inttypes.h

Código de ejemplo:
Código
  1. #include <stdint.h>
  2. #include <inttypes.h>
  3. #include <stdio.h>
  4.  
  5. int main( int argc , char **argv)
  6. {
  7.  uint64_t numero = 0;
  8.  printf("Introduzca un numero:");
  9.  
  10.  //Aqu&#237; se usa %llu , por que en la referencia pone.
  11.  //#define SCNu64 'llu'
  12.  //La u es para los sin signo , la i y  la d para los enteros con signo
  13.  scanf("%llu",&numero);
  14.  
  15.  //Aqu&#237; se usa %llu , por que en la referencia pone.
  16.  //#define PRIu64 'llu'
  17.  //La u es para los sin signo , la i y  la d para los enteros con signo
  18.  printf("Tu numero es %llu", numero);
  19.  
  20.  getchar();
  21.  return 0;
  22. }

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 :
Código:
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:
Código
  1. #include <stdint.h>
  2. #include <inttypes.h>
  3. #include <stdio.h>
  4.  
  5. int main( int argc , char **argv)
  6. {
  7.  uint64_t numero = 0;
  8.  FILE * archivo;
  9.  archivo = fopen("numero.txt","r"); // Abrimos un archivo para leerlo que debe contener el n&#250;mero.
  10.  /*   The fscanf() macros for unsigned integers are:
  11.          SCNoN   SCNoLEASTN  SCNoFASTN   SCNoMAX  SCNoPTR
  12.          SCNuN   SCNuLEASTN  SCNuFASTN   SCNuMAX  SCNuPTR
  13.          SCNxN   SCNxLEASTN  SCNxFASTN   SCNxMAX  SCNxPTR
  14.   */
  15.  //Nosotros vamos a usar SCNu64 , N se sustituye por uno de los numeros de bits.
  16.  fscanf(archivo, "%llu", &numero);
  17.  printf("El numero del archivo es %llu", numero);
  18.  getchar();
  19.  return 0;
  20. }
  21.  

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


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: Como almacenar un numero de 10 cifras
« Respuesta #5 en: 25 Octubre 2012, 21:42 pm »

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 Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Como almacenar un numero de 10 cifras
« Respuesta #6 en: 25 Octubre 2012, 21:49 pm »

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


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: Como almacenar un numero de 10 cifras
« Respuesta #7 en: 25 Octubre 2012, 21:51 pm »

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 Desconectado

Mensajes: 584



Ver Perfil
Re: Como almacenar un numero de 10 cifras
« Respuesta #8 en: 30 Octubre 2012, 00:13 am »

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

Desconectado Desconectado

Mensajes: 42


Ver Perfil WWW
Re: Como almacenar un numero de 10 cifras
« Respuesta #9 en: 30 Octubre 2012, 12:03 pm »

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

Problemas interesantes de programación en C/C++ y Pascal en:
BLOG C/C++


WWW.CYPASCAL.BLOGSPOT.COM.ES
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como almacenar ficheros (p.ej imagenes) en un sitio web
PHP
lnvisible 4 2,936 Último mensaje 1 Noviembre 2012, 11:33 am
por lnvisible
Constructor (String numero) copia cifras a un Array. AYUDA PORFAVOR
Java
chriwasch 0 1,775 Último mensaje 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,771 Último mensaje 15 Octubre 2014, 12:17 pm
por eferion
Assembler programa que sume, reste, multiplique numero de 2 cifras.
ASM
AnubisQuero 0 7,679 Último mensaje 12 Febrero 2016, 18:49 pm
por AnubisQuero
Las cifras que tiene un numero « 1 2 »
Programación C/C++
mikel-mb 19 8,171 Último mensaje 13 Noviembre 2017, 13:39 pm
por mikel-mb
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines