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
#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;
}
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