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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  numero maximo permitido
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: numero maximo permitido  (Leído 3,622 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
numero maximo permitido
« en: 20 Febrero 2014, 22:52 pm »

Saludos

tengo que hacer un programa que me permita ingresarle un numero mayor a 100000000, y busque si el digito x existe en el número y cuantas veces se repite, el numero no debe de ser cadena o char, en el algoritmo ya tengo pensando como hacerlo ya que pues tienes que hacer un busqueda y eso no es la parte dificil, no necesito el codigo. El problema es que me ponen de restriccion que el usuario pueda meter el numero maximo permitido por el sistema o sea hasta que se llene el buffer y que sea a prueba de error, alguna idea de como hacer esto??

gracias


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: numero maximo permitido
« Respuesta #1 en: 20 Febrero 2014, 23:24 pm »

No veo el problema, el scanf te debería permitir hasta el número máximo del sistema.


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
Re: numero maximo permitido
« Respuesta #2 en: 22 Febrero 2014, 02:14 am »

Saludos amchacon, el código es el siguiente:

Código
  1. #include <iostream>
  2. #define DIEZ 10
  3.  
  4. using namespace std;
  5.  
  6. int buscarDigito(long int numero,int digito);
  7.  
  8. int main()
  9. {
  10.    long int numero;
  11.    int digito,x;
  12.    cout << "Dame el numero: " << endl;
  13.    cin >> numero;
  14.    cout << "Que digito desea buscar? " << endl;
  15.    cin >> digito;
  16.    x = buscarDigito(numero,digito);
  17.    cout << "\nEl digito " << digito << " se repite " << x << " veces" << endl;
  18.    return 0;
  19. }
  20.  
  21. int buscarDigito(long int numero,int digito)
  22. {
  23.    int residuo,cociente,repetidos = 0;
  24.    for(cociente = numero;cociente != 0;cociente = cociente/10)
  25.    {
  26.        residuo = cociente % 10;
  27.        if(residuo == digito)
  28.           repetidos++;
  29.    }
  30.    return repetidos;
  31. }

y si le pido que le ingrese un numero como: 10040050, el codigo funciona correctamente y me dice, que digito desea buscar, si le digo que 0 me imprime

el digito 0 se repite 5 veces

pero si le ingreso un numero mas grande como: 100019860100890 el programa ya no funciona, ni siquiera me deja que le diga cual digito quiero buscar, una de las restricciones que tengo es que tengo que poder introducir numeros mayores a 100000000 pero el tipo de dato no podra ser char o cadena entonces como lo resuelvo??
gracias
En línea

vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: numero maximo permitido
« Respuesta #3 en: 22 Febrero 2014, 03:54 am »

En los compiladores actuales creo que el long es lo mismo que int.
En mi ordenador ambos tienen 4 bytes.
prueba con long long int numero;  :rolleyes:

le entra −9,223,372,036,854,775,808 a +9,223,372,036,854,775,807
o
0 a 18,446,744,073,709,551,615

una burrada de numero XDD
de 0 a a mas de 18 trillones.
9223372036854775807 VS
       100019860100890

y si no usas negativos pues:

18,446,744,073,709,551,615
           100,019,860,100,890

Creo que le supera un poquito XD :silbar:

si quieres algo mas largo tomaXD:
http://www.ginac.de/CLN/cln.html
"Personalmente he usado numeros con + de 3000 digitos sin ningún problema."  :o
Fuente:
http://clan-destino42.blogspot.com.es/2011/01/numeros-grandes-en-c.html
¿Lo de arriba se puede hacer? No se es que me suena a coña XD

Mas números que eso solo un agujero negro. jajaj
« Última modificación: 22 Febrero 2014, 04:10 am por vangodp » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: numero maximo permitido
« Respuesta #4 en: 22 Febrero 2014, 17:01 pm »

En los compiladores actuales creo que el long es lo mismo que int.
No necesariamente. Las únicas dos garantías son: 1) El tipo int es menor o igual al tipo long y 2) El tipo long se compone por al menos 32 bits.

una de las restricciones que tengo es que tengo que poder introducir numeros mayores a 100000000 pero el tipo de dato no podra ser char o cadena entonces como lo resuelvo??
Verificas que el resultado de "cin >> variable" sea true y que el resto de la linea solo consista de espacio blanco. Por ejemplo:
Código
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4. using std::endl;
  5.  
  6. #include <cstdio>
  7. // EOF
  8.  
  9. #include <cctype>
  10. using std::isspace;
  11.  
  12. int main()
  13. {
  14.   cout << "Introduce un numero: ";
  15.   long int num;
  16.   bool rv = cin >> num;
  17.  
  18.   int ch;
  19.   while ((ch = cin.get()) != EOF && ch != '\n')
  20.      if (!isspace(ch))
  21.         rv = false;
  22.  
  23.   if (rv)
  24.      cout << "OK (" << num << ")" << endl;
  25.   else
  26.      cout << "Error" << endl;
  27.  
  28.   return 0;
  29. }
Ello te indicara si ocurre un error pero nada mas, para el caso es mejor leer una linea de texto y verificarla con strtol, strtoll, etc. ya que ellas permiten conocer cual fue el error (por ejemplo un numero fuera del rango valido).

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
vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: numero maximo permitido
« Respuesta #5 en: 22 Febrero 2014, 23:32 pm »

¿Y se puede guardar un numero tan largo como el que dijo 3000 dígitos?
Me parece desnecesario ademas de coña XD
¿Para que un numero de 3000 dígitos?Este pavo flipa en colores creo.  :silbar:

Sobre lo de los bits aun tengo que afinar XD
Por que a pesar de saber que a mas bits mas cosas puedes representar, no se muy bien como funciona eso.
« Última modificación: 22 Febrero 2014, 23:36 pm por vangodp » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines