Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: hossman92 en 24 Noviembre 2014, 19:02 pm



Título: Generador diccionario numérico
Publicado por: hossman92 en 24 Noviembre 2014, 19:02 pm
Hola buenas os dejo aquí el código C++ del generador de diccionarios que he echo para ir practicando. Me gustaría que me dijerais si hay algo mal o mejorable y lo he comentado bien por si alguien no sabe hacerlo y quiere ver algo para guiarse (o copiarlo como hacen algunos xDD), en cualquier caso un saludo y espero que os sirva/me ayudéis.

PD: Si alguno pone el tiempo total de ejecución para 5 cifras para comparar tiempos podría ser divertido yo con mi core quad 8600 en 48seg  ;D

PD2: por las lineas 30 y 24 quizas solo puedas ejecutarlo en windows, comenta las lineas si usas otro sistema operativo y creo que ya seria multiplataforma (corregidme si me equivoco)


PD3: y 6 cifras 306 segundos!!  ;D ;D

Código
  1. #include <iostream>
  2. #include <fstream>  //para entrada y salida al archivo
  3. #include <iomanip> //para setfill y setw
  4. #include <math.h> //para funcion pow
  5. #include <stdlib.h>
  6. using namespace std;
  7.  
  8. //main
  9. int main()
  10. {
  11.    //declaro variables para la generacion del diccionario
  12.    int cont=0; //contador
  13.    int maximo,cifras; //numero maximo del diccionario y cifras que se desean
  14.  
  15.    //creacion archivo para guardar numeros
  16.    ofstream fs("diccionario.txt");
  17.  
  18.   //inicio
  19.    cout << "\nIntroduzca la cantidad de cifras que desee para el diccionario.\nEjemplo: 6 para diccionario de seis digitos(000000-999999)\n" << endl;
  20.    cout << "Introduce 0 para salir"<<endl;
  21.    cin >> cifras;
  22.  
  23.    //limpiamos pantalla
  24.    system("cls");
  25.  
  26.    if (cifras!=0){
  27.        //calculamos el maximo segun la cifra introducida ej 3 ==> hasta 1000 (0-999)
  28.        maximo = pow(10,cifras);
  29.        cout << "Has seleccionado "<<cifras<<" cifras\nSe generaran "<< maximo <<" numeros"<<endl;
  30.        system("PAUSE");
  31.    }
  32.  
  33.    //bucle para escribir numeros
  34.    while (cont<=maximo&&cifras!=0){
  35.  
  36.        //texto mientras se genera el diccionario
  37.        cout << "Generando diccionario... \n" << endl;
  38.  
  39.        //escribimos numero actual en archivo
  40.        //setfill coloca ceros a la izquierda y setw indica la cantidad de ceros
  41.        fs << setfill('0') << setw(cifras) << cont << endl;
  42.        cont++;
  43.  
  44.    }//fin bucle
  45.  
  46.    //cerramos el fichero
  47.    fs.close();
  48.  
  49.    //mensaje final
  50.    if (cifras!=0){
  51.        cout << "Diccionario completado y guardado. "<< endl;
  52.    }
  53.    else {
  54.        cout << "********************ADIOS********************"<< endl;
  55.    }
  56.    return 0;
  57. }


Título: Re: Generador diccionario numérico
Publicado por: engel lex en 24 Noviembre 2014, 19:12 pm
Si imprimes a pantalla y escribes en el archivo cada numero sera lento, ya que tiene que esperar las respuestas de impresión en pantalla y archivo, mejor genera en un array un lote como 10.000 numeros y guardas todo junto, en la pantalla solo muestras cuando guardes