Autor
|
Tema: numero maximo permitido (Leído 3,586 veces)
|
m@o_614
Desconectado
Mensajes: 389
|
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
Mensajes: 1.211
|
No veo el problema, el scanf te debería permitir hasta el número máximo del sistema.
|
|
|
En línea
|
|
|
|
m@o_614
Desconectado
Mensajes: 389
|
Saludos amchacon, el código es el siguiente: #include <iostream> #define DIEZ 10 using namespace std; int buscarDigito(long int numero,int digito); int main() { long int numero; int digito,x; cout << "Dame el numero: " << endl; cin >> numero; cout << "Que digito desea buscar? " << endl; cin >> digito; x = buscarDigito(numero,digito); cout << "\nEl digito " << digito << " se repite " << x << " veces" << endl; return 0; } int buscarDigito(long int numero,int digito) { int residuo,cociente,repetidos = 0; for(cociente = numero;cociente != 0;cociente = cociente/10) { residuo = cociente % 10; if(residuo == digito) repetidos++; } return repetidos; }
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
Mensajes: 455
|
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; 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 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." 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 XDMas 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
Mensajes: 1.639
|
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: #include <iostream> using std::cin; using std::cout; using std::endl; #include <cstdio> // EOF #include <cctype> using std::isspace; int main() { cout << "Introduce un numero: "; long int num; bool rv = cin >> num; int ch; while ((ch = cin.get()) != EOF && ch != '\n') if (!isspace(ch)) rv = false; if (rv) cout << "OK (" << num << ")" << endl; else cout << "Error" << endl; return 0; }
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
Mensajes: 455
|
¿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. 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Pasar de cadena(char) a entero(int) sin sobrepasar el máximo permitido.
« 1 2 3 »
Programación C/C++
|
NOB2014
|
21
|
10,764
|
9 Enero 2014, 14:35 pm
por leosansan
|
|
|
[Aporte] No superar el máximo permitido por el tipo int. lenguaje C
Programación C/C++
|
NOB2014
|
1
|
2,115
|
24 Agosto 2016, 02:21 am
por NOB2014
|
|
|
Ayuda!! Login con número máximo de intentos
.NET (C#, VB.NET, ASP)
|
Victortgpc
|
5
|
7,231
|
11 Febrero 2017, 17:31 pm
por Victortgpc
|
|
|
obtener el número máximo y el número mínimo de matriz aleatoria c++
Programación C/C++
|
ra58alfa
|
2
|
4,703
|
4 Julio 2018, 23:31 pm
por Beginner Web
|
|
|
Reino Unido multa a Facebook con el máximo permitido por el escándalo de ...
Noticias
|
wolfbcn
|
0
|
988
|
25 Octubre 2018, 14:14 pm
por wolfbcn
|
|