Test Foro de elhacker.net SMF 2.1

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 (cpp) [Seleccionar]
#include <iostream>
#include <fstream>  //para entrada y salida al archivo
#include <iomanip> //para setfill y setw
#include <math.h> //para funcion pow
#include <stdlib.h>
using namespace std;

//main
int main()
{
    //declaro variables para la generacion del diccionario
    int cont=0; //contador
    int maximo,cifras; //numero maximo del diccionario y cifras que se desean

    //creacion archivo para guardar numeros
    ofstream fs("diccionario.txt");

   //inicio
    cout << "\nIntroduzca la cantidad de cifras que desee para el diccionario.\nEjemplo: 6 para diccionario de seis digitos(000000-999999)\n" << endl;
    cout << "Introduce 0 para salir"<<endl;
    cin >> cifras;

    //limpiamos pantalla
    system("cls");

    if (cifras!=0){
        //calculamos el maximo segun la cifra introducida ej 3 ==> hasta 1000 (0-999)
        maximo = pow(10,cifras);
        cout << "Has seleccionado "<<cifras<<" cifras\nSe generaran "<< maximo <<" numeros"<<endl;
        system("PAUSE");
    }

    //bucle para escribir numeros
    while (cont<=maximo&&cifras!=0){

        //texto mientras se genera el diccionario
        cout << "Generando diccionario... \n" << endl;

        //escribimos numero actual en archivo
        //setfill coloca ceros a la izquierda y setw indica la cantidad de ceros
        fs << setfill('0') << setw(cifras) << cont << endl;
        cont++;

    }//fin bucle

    //cerramos el fichero
    fs.close();

    //mensaje final
    if (cifras!=0){
        cout << "Diccionario completado y guardado. "<< endl;
    }
    else {
        cout << "********************ADIOS********************"<< endl;
    }
    return 0;
}
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