Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <cstring>
- #include <cstdio>
- #include <ctime>
- #include <cmalloc>
- using namespace std;
- const char *szNumeroUnderline[] =
- {
- "_00", "_01", "_02", "_03", "_04", "_05", "_06", "_07", "_08", "_09",
- "_10", "_11", "_12", "_13", "_14", "_15", "_16", "_17", "_18", "_19",
- "_20", "_21", "_22", "_23", "_24", "_25", "_26", "_27", "_28", "_29",
- "_30", "_31", "_32", "_33", "_34", "_35", "_36", "_37", "_38", "_39",
- "_40", "_41", "_42", "_43", "_44", "_45", "_46", "_47", "_48", "_49",
- "_50", "_51", "_52", "_53", "_54", "_55", "_56", "_57", "_58", "_59",
- "_60", "_61", "_62", "_63", "_64", "_65", "_66", "_67", "_68", "_69",
- "_70", "_71", "_72", "_73", "_74", "_75", "_76", "_77", "_78", "_79",
- "_80", "_81", "_82", "_83", "_84", "_85", "_86", "_87", "_88", "_89",
- "_90", "_91", "_92", "_93", "_94", "_95", "_96", "_97", "_98", "_99"
- };
- const char *szNumeroCSV[] =
- {
- ";00", ";01", ";02", ";03", ";04", ";05", ";06", ";07", ";08", ";09",
- ";10", ";11", ";12", ";13", ";14", ";15", ";16", ";17", ";18", ";19",
- ";20", ";21", ";22", ";23", ";24", ";25", ";26", ";27", ";28", ";29",
- ";30", ";31", ";32", ";33", ";34", ";35", ";36", ";37", ";38", ";39",
- ";40", ";41", ";42", ";43", ";44", ";45", ";46", ";47", ";48", ";49",
- ";50", ";51", ";52", ";53", ";54", ";55", ";56", ";57", ";58", ";59",
- ";60", ";61", ";62", ";63", ";64", ";65", ";66", ";67", ";68", ";69",
- ";70", ";71", ";72", ";73", ";74", ";75", ";76", ";77", ";78", ";79",
- ";80", ";81", ";82", ";83", ";84", ";85", ";86", ";87", ";88", ";89",
- ";90", ";91", ";92", ";93", ";94", ";95", ";96", ";97", ";98", ";99"
- };
- int GerarQuina5Numeros()
- {
- // char szTemp[4096];
- int iContadorArquivo = 0;
- int iContadorLinha = 0;
- time_t tempoInicial, tempoFinal;
- tempoInicial = time(&tempoInicial);
- // Vamos calcular cada linha, cada linha está neste formato:
- // QUINA;7;_01_02_03_04_05_06_07;01;02;03;04;05;06;07
- // Haverá mais 1 caractere para o caractere nulo ou carriage return.
- int iQuantidade = strlen("QUINA;5;_01_02_03_04_05;01;02;03;04;05") + 1;
- // Haverá um total de 1 milhão de linhas, com cada linha tendo 52 caracteres, então,
- // iremos alocar primeiramente este espaço.
- char *szTodasLinhas = (char*)malloc(sizeof(char)* iQuantidade * 1000000);
- memset(szTodasLinhas, '\0', sizeof(char)* iQuantidade * 1000000);
- // Agora, iremos, alocar um ponteiro para ponteiro.
- char **szLinhas = (char**)malloc(sizeof(char*)* 1000000);
- // char *ptTeste = szLinhas[0];
- // Agora, vamos apontar cada ponteiro.
- for(int iA = 0; iA < 1000000; iA++)
- {
- szLinhas[iA] = szTodasLinhas + iA * iQuantidade;
- }
- for(int uA = 1; uA <= 80; uA++)
- for(int uB = uA+1; uB <= 80; uB++)
- for(int uC = uB + 1; uC <= 80; uC++)
- for(int uD = uC + 1; uD <= 80; uD++)
- for(int uE = uD + 1; uE <= 80; uE++)
- //for(int uF = uE + 1; uF <= 80; uF++)
- //for(int uG = uF + 1; uG <= 80; uG++)
- {
- char *pt = &szLinhas[iContadorLinha][0];
- // char *ptUm = &szLinhas[iContadorLinha][0];
- // Devemos definir o primeiro caractere nulo.
- // Senão strcat, vai continuar de onde parou, pois reutilizaremos
- // o arranjo várias vezes.
- *pt = '\0';
- strcat(pt, "QUINA;5;");
- strncat(pt, szNumeroUnderline[uA], 3);
- strncat(pt, szNumeroUnderline[uB], 3);
- strncat(pt, szNumeroUnderline[uC], 3);
- strncat(pt, szNumeroUnderline[uD], 3);
- strncat(pt, szNumeroUnderline[uE], 3);
- //strncat(pt, szNumeroUnderline[uF], 3);
- //strncat(pt, szNumeroUnderline[uG], 3);
- strncat(pt, szNumeroCSV[uA], 3);
- strncat(pt, szNumeroCSV[uB], 3);
- strncat(pt, szNumeroCSV[uC], 3);
- strncat(pt, szNumeroCSV[uD], 3);
- strncat(pt, szNumeroCSV[uE], 3);
- //strncat(pt, szNumeroCSV[uF], 3);
- //strncat(pt, szNumeroCSV[uG], 3);
- // Coloca o caractere '\n' ao invés do nulo. '\0'.
- // Pois ao salvar, devemos gravar o caractere nulo.
- pt = strchr(pt, '\0');
- *pt = '\n';
- iContadorLinha++;
- if(iContadorLinha==1000000)
- {
- iContadorLinha = 0;
- char szTemp[20];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- char szArquivo[1024];
- char *pt = szArquivo;
- *pt = '\0';
- strcat(pt, "/mnt/Gerador_de_Palavras/quina_5_numeros_arq_");
- pt = strchr(szArquivo, '\0');
- iContadorArquivo++;
- sprintf(pt, "%.10d", iContadorArquivo);
- strcat(pt, "_inicio_");
- strcat(pt, szTemp);
- strcat(pt, "_fim_");
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- strcat(pt, szTemp);
- strcat(pt, ".txt");
- printf("Abrindo arquivo:\n%s\n", szArquivo);
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- fprintf(stderr, "Erro ao abrir arquivo.\n");
- perror("Erro foi: ");
- return -1;
- }
- printf("Gravando...\t");
- for(int uLinha = 0; uLinha < 1000000; uLinha++)
- fwrite(&szLinhas[uLinha][0], iQuantidade, 1, fArquivo);
- fclose(fArquivo);
- printf("Gravado.\n\n");
- }
- time(&tempoInicial);
- }
- // Toda vez que uma nova linha é gerada, iContadorLinha é incrementado.
- // Se ao final do loop, iContadorLinha for diferente de zero, quer dizer
- // que há linhas ainda não gravadas.
- // Então, iremos gravar da linha 0, até iContadorLinha - 1, pois
- // iContadorLinha é sempre 1 a mais
- if(iContadorLinha != 0)
- {
- char szTemp[20];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- char szArquivo[1024];
- char *pt = szArquivo;
- *pt = '\0';
- strcat(pt, "/mnt/Gerador_de_Palavras/quina_5_numeros_arq_");
- pt = strchr(szArquivo, '\0');
- iContadorArquivo++;
- sprintf(pt, "%.10d", iContadorArquivo);
- strcat(pt, "_inicio_");
- strcat(pt, szTemp);
- strcat(pt, "_fim_");
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- strcat(pt, szTemp);
- strcat(pt, ".txt");
- printf("Abrindo arquivo:\n%s\n", szArquivo);
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- fprintf(stderr, "Erro ao abrir arquivo.\n");
- perror("Erro foi: ");
- return -1;
- }
- printf("Gravando...\t");
- for(int uLinha = 0; uLinha < iContadorLinha; uLinha++)
- fwrite(&szLinhas[uLinha][0], iQuantidade, 1, fArquivo);
- fclose(fArquivo);
- printf("Gravado.\n\n");
- }
- time(&tempoInicial);
- printf("Executado com sucesso!!!");
- return 0;
- }
- int GerarDuplaSena7Numeros()
- {
- // char szTemp[4096];
- int iContadorArquivo = 0;
- int iContadorLinha = 0;
- time_t tempoInicial, tempoFinal;
- tempoInicial = time(&tempoInicial);
- // Vamos calcular cada linha, cada linha está neste formato:
- // QUINA;7;_01_02_03_04_05_06_07;01;02;03;04;05;06;07
- // Haverá mais 1 caractere para o caractere nulo ou carriage return.
- int iQuantidade = strlen("DUPLASENA;7;_01_02_03_04_05_06_07;01;02;03;04;05;06;07") + 1;
- // Haverá um total de 1 milhão de linhas, com cada linha tendo 52 caracteres, então,
- // iremos alocar primeiramente este espaço.
- char *szTodasLinhas = (char*)malloc(sizeof(char)* iQuantidade * 1000000);
- memset(szTodasLinhas, '\0', sizeof(char)* iQuantidade * 1000000);
- // Agora, iremos, alocar um ponteiro para ponteiro.
- char **szLinhas = (char**)malloc(sizeof(char*)* 1000000);
- // char *ptTeste = szLinhas[0];
- // Agora, vamos apontar cada ponteiro.
- for(int iA = 0; iA < 1000000; iA++)
- {
- szLinhas[iA] = szTodasLinhas + iA * iQuantidade;
- }
- for(int uA = 1; uA <= 50; uA++)
- for(int uB = uA+1; uB <= 50; uB++)
- for(int uC = uB + 1; uC <= 50; uC++)
- for(int uD = uC + 1; uD <= 50; uD++)
- for(int uE = uD + 1; uE <= 50; uE++)
- for(int uF = uE + 1; uF <= 50; uF++)
- for(int uG = uF + 1; uG <= 50; uG++)
- {
- char *pt = &szLinhas[iContadorLinha][0];
- // char *ptUm = &szLinhas[iContadorLinha][0];
- // Devemos definir o primeiro caractere nulo.
- // Senão strcat, vai continuar de onde parou, pois reutilizaremos
- // o arranjo várias vezes.
- *pt = '\0';
- strcat(pt, "DUPLASENA;7;");
- strncat(pt, szNumeroUnderline[uA], 3);
- strncat(pt, szNumeroUnderline[uB], 3);
- strncat(pt, szNumeroUnderline[uC], 3);
- strncat(pt, szNumeroUnderline[uD], 3);
- strncat(pt, szNumeroUnderline[uE], 3);
- strncat(pt, szNumeroUnderline[uF], 3);
- strncat(pt, szNumeroUnderline[uG], 3);
- strncat(pt, szNumeroCSV[uA], 3);
- strncat(pt, szNumeroCSV[uB], 3);
- strncat(pt, szNumeroCSV[uC], 3);
- strncat(pt, szNumeroCSV[uD], 3);
- strncat(pt, szNumeroCSV[uE], 3);
- strncat(pt, szNumeroCSV[uF], 3);
- strncat(pt, szNumeroCSV[uG], 3);
- // Coloca o caractere '\n' ao invés do nulo. '\0'.
- // Pois ao salvar, devemos gravar o caractere nulo.
- pt = strchr(pt, '\0');
- *pt = '\n';
- iContadorLinha++;
- if(iContadorLinha==1000000)
- {
- // É a última linha, retira o caractere '\n'.
- *pt = '\0';
- iContadorLinha = 0;
- char szTemp[20];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- char szArquivo[1024];
- char *pt = szArquivo;
- *pt = '\0';
- strcat(pt, "/mnt/Gerador_de_Palavras/duplasena_7_numeros_arq_");
- pt = strchr(szArquivo, '\0');
- iContadorArquivo++;
- sprintf(pt, "%.10d", iContadorArquivo);
- strcat(pt, "_inicio_");
- strcat(pt, szTemp);
- strcat(pt, "_fim_");
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- strcat(pt, szTemp);
- strcat(pt, ".txt");
- printf("Abrindo arquivo:\n%s\n", szArquivo);
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- fprintf(stderr, "Erro ao abrir arquivo.\n");
- perror("Erro foi: ");
- return -1;
- }
- printf("Gravando...\t");
- for(int uLinha = 0; uLinha < 1000000; uLinha++)
- fwrite(&szLinhas[uLinha][0], iQuantidade, 1, fArquivo);
- fclose(fArquivo);
- printf("Gravado.\n\n");
- }
- time(&tempoInicial);
- }
- // Toda vez que uma nova linha é gerada, iContadorLinha é incrementado.
- // Se ao final do loop, iContadorLinha for diferente de zero, quer dizer
- // que há linhas ainda não gravadas.
- // Então, iremos gravar da linha 0, até iContadorLinha - 1, pois
- // iContadorLinha é sempre 1 a mais
- if(iContadorLinha != 0)
- {
- char szTemp[20];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- char szArquivo[1024];
- char *pt = szArquivo;
- *pt = '\0';
- strcat(pt, "/mnt/Gerador_de_Palavras/duplasena_7_numeros_arq_");
- pt = strchr(szArquivo, '\0');
- iContadorArquivo++;
- sprintf(pt, "%.10d", iContadorArquivo);
- strcat(pt, "_inicio_");
- strcat(pt, szTemp);
- strcat(pt, "_fim_");
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- strcat(pt, szTemp);
- strcat(pt, ".txt");
- printf("Abrindo arquivo:\n%s\n", szArquivo);
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- fprintf(stderr, "Erro ao abrir arquivo.\n");
- perror("Erro foi: ");
- return -1;
- }
- printf("Gravando...\t");
- for(int uLinha = 0; uLinha < iContadorLinha; uLinha++)
- fwrite(&szLinhas[uLinha][0], iQuantidade, 1, fArquivo);
- fclose(fArquivo);
- printf("Gravado.\n\n");
- }
- time(&tempoInicial);
- printf("Executado com sucesso!!!");
- return 0;
- }
- int GerarDuplaSena6Numeros()
- {
- // char szTemp[4096];
- int iContadorArquivo = 0;
- int iContadorLinha = 0;
- time_t tempoInicial, tempoFinal;
- tempoInicial = time(&tempoInicial);
- // Vamos calcular cada linha, cada linha está neste formato:
- // QUINA;7;_01_02_03_04_05_06_07;01;02;03;04;05;06;07
- // Haverá mais 1 caractere para o caractere nulo ou carriage return.
- int iQuantidade = strlen("DUPLASENA;6;_01_02_03_04_05_06;01;02;03;04;05;06") + 1;
- // Haverá um total de 1 milhão de linhas, com cada linha tendo 52 caracteres, então,
- // iremos alocar primeiramente este espaço.
- char *szTodasLinhas = (char*)malloc(sizeof(char)* iQuantidade * 1000000);
- memset(szTodasLinhas, '\0', sizeof(char)* iQuantidade * 1000000);
- // Agora, iremos, alocar um ponteiro para ponteiro.
- char **szLinhas = (char**)malloc(sizeof(char*)* 1000000);
- // char *ptTeste = szLinhas[0];
- // Agora, vamos apontar cada ponteiro.
- for(int iA = 0; iA < 1000000; iA++)
- {
- szLinhas[iA] = szTodasLinhas + iA * iQuantidade;
- }
- for(int uA = 1; uA <= 50; uA++)
- for(int uB = uA+1; uB <= 50; uB++)
- for(int uC = uB + 1; uC <= 50; uC++)
- for(int uD = uC + 1; uD <= 50; uD++)
- for(int uE = uD + 1; uE <= 50; uE++)
- for(int uF = uE + 1; uF <= 50; uF++)
- //for(int uG = uF + 1; uG <= 80; uG++)
- {
- char *pt = &szLinhas[iContadorLinha][0];
- // char *ptUm = &szLinhas[iContadorLinha][0];
- // Devemos definir o primeiro caractere nulo.
- // Senão strcat, vai continuar de onde parou, pois reutilizaremos
- // o arranjo várias vezes.
- *pt = '\0';
- strcat(pt, "DUPLASENA;6;");
- strncat(pt, szNumeroUnderline[uA], 3);
- strncat(pt, szNumeroUnderline[uB], 3);
- strncat(pt, szNumeroUnderline[uC], 3);
- strncat(pt, szNumeroUnderline[uD], 3);
- strncat(pt, szNumeroUnderline[uE], 3);
- strncat(pt, szNumeroUnderline[uF], 3);
- //strncat(pt, szNumeroUnderline[uG], 3);
- strncat(pt, szNumeroCSV[uA], 3);
- strncat(pt, szNumeroCSV[uB], 3);
- strncat(pt, szNumeroCSV[uC], 3);
- strncat(pt, szNumeroCSV[uD], 3);
- strncat(pt, szNumeroCSV[uE], 3);
- strncat(pt, szNumeroCSV[uF], 3);
- //strncat(pt, szNumeroCSV[uG], 3);
- // Coloca o caractere '\n' ao invés do nulo. '\0'.
- // Pois ao salvar, devemos gravar o caractere nulo.
- pt = strchr(pt, '\0');
- *pt = '\n';
- iContadorLinha++;
- if(iContadorLinha==1000000)
- {
- iContadorLinha = 0;
- char szTemp[20];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- char szArquivo[1024];
- char *pt = szArquivo;
- *pt = '\0';
- strcat(pt, "/mnt/Gerador_de_Palavras/duplasena_6_numeros_arq_");
- pt = strchr(szArquivo, '\0');
- iContadorArquivo++;
- sprintf(pt, "%.10d", iContadorArquivo);
- strcat(pt, "_inicio_");
- strcat(pt, szTemp);
- strcat(pt, "_fim_");
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- strcat(pt, szTemp);
- strcat(pt, ".txt");
- printf("Abrindo arquivo:\n%s\n", szArquivo);
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- fprintf(stderr, "Erro ao abrir arquivo.\n");
- perror("Erro foi: ");
- return -1;
- }
- printf("Gravando...\t");
- for(int uLinha = 0; uLinha < 1000000; uLinha++)
- fwrite(&szLinhas[uLinha][0], iQuantidade, 1, fArquivo);
- fclose(fArquivo);
- printf("Gravado.\n\n");
- }
- time(&tempoInicial);
- }
- // Toda vez que uma nova linha é gerada, iContadorLinha é incrementado.
- // Se ao final do loop, iContadorLinha for diferente de zero, quer dizer
- // que há linhas ainda não gravadas.
- // Então, iremos gravar da linha 0, até iContadorLinha - 1, pois
- // iContadorLinha é sempre 1 a mais
- if(iContadorLinha != 0)
- {
- char szTemp[20];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- char szArquivo[1024];
- char *pt = szArquivo;
- *pt = '\0';
- strcat(pt, "/mnt/Gerador_de_Palavras/duplasena_6_numeros_arq_");
- pt = strchr(szArquivo, '\0');
- iContadorArquivo++;
- sprintf(pt, "%.10d", iContadorArquivo);
- strcat(pt, "_inicio_");
- strcat(pt, szTemp);
- strcat(pt, "_fim_");
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- strcat(pt, szTemp);
- strcat(pt, ".txt");
- printf("Abrindo arquivo:\n%s\n", szArquivo);
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- fprintf(stderr, "Erro ao abrir arquivo.\n");
- perror("Erro foi: ");
- return -1;
- }
- printf("Gravando...\t");
- for(int uLinha = 0; uLinha < iContadorLinha; uLinha++)
- fwrite(&szLinhas[uLinha][0], iQuantidade, 1, fArquivo);
- fclose(fArquivo);
- printf("Gravado.\n\n");
- }
- time(&tempoInicial);
- printf("Executado com sucesso!!!");
- return 0;
- }
- void GravarArquivo(const char *ptPalavras, int quantidadeCaracteres, int contadorArquivo, time_t tempoInicial)
- {
- char szArquivo[4096];
- char *pt = szArquivo;
- char szTemp[20] = {0};
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S-", localtime(&tempoInicial));
- *pt = '\0';
- strcat(pt, "/mnt/Gerador_de_Palavras/palavras_arq_");
- pt = strchr(pt, '\0');
- sprintf(pt, "%.10d_", contadorArquivo);
- strcat(pt, "inicio_");
- strcat(pt, szTemp);
- strcat(pt, "_fim_");
- time(&tempoInicial);
- szTemp[0] = '\0';
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- strcat(pt, szTemp);
- strcat(pt, ".txt");
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- perror("O erro foi: ");
- printf("szArquivo = '%s'\n", szArquivo);
- exit(-3);
- return;
- }
- // Vamos gravar.
- printf("\nGravando no arquivo:[%d] %s\n", contadorArquivo, szArquivo);
- fwrite(ptPalavras, quantidadeCaracteres, 1, fArquivo);
- printf("\nGravado.\n");
- fclose(fArquivo);
- }
- // Vamos criar uma função recursiva.
- void GerarCaracteres(char *pt, char * const ptPalavra, char * const ptPalavraCompleta, const char * const szCaracteres,
- int uNivel, int ultimoNivel, int uIndiceAnterior, int uIndiceMaximo,
- int * qtCaracteresGerados, int * qtLinhas, time_t *tempoInicial, int *contadorArquivo)
- {
- ptPalavraCompleta[uNivel] = szCaracteres[uIndiceAnterior];
- for(int uA = 0; uA <= uIndiceMaximo; uA++)
- {
- for(int uIndice = 0; uIndice < uNivel; uIndice++)
- {
- *pt++ = ptPalavraCompleta[uIndice];
- }
- *pt++ = szCaracteres[uA];
- *pt++ = '\n';
- *qtCaracteresGerados += uNivel+ 1;
- *qtLinhas += 1;
- // Vamos gravar um novo arquivo, se a quantidade de linhas foi preenchida.
- if(*qtLinhas == 1000000)
- {
- // A última linha não pode ter um caractere de nova linhas, pois, se tiver,
- // o arquivo será gerado com mais de 1000000 de linhas.
- *pt = '\0';
- GravarArquivo(ptPalavra, *qtCaracteresGerados, ++(*contadorArquivo), *tempoInicial);
- // Todas as palavras foram gravadas, devemos retornar para o ínício da primeira palavra.
- pt = &ptPalavra[0];
- // Definir o primeiro caractere para nulo.
- *pt = '\0';
- *qtCaracteresGerados = 0;
- *qtLinhas = 0;
- time( (time_t *)tempoInicial);
- }
- //
- // if(qtLinhas == 1000000)
- // {
- // // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- // GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- // qtCaracteresGerados = 0;
- //
- // qtLinhas = 0;
- // pt = &szPalavras[0];
- // *pt = '\0';
- // time(&tempoInicial);
- // }
- if(uNivel != ultimoNivel)
- GerarCaracteres(pt, ptPalavra, ptPalavraCompleta, szCaracteres, uNivel + 1, 4,
- uA, uIndiceMaximo, qtCaracteresGerados, qtLinhas, tempoInicial, contadorArquivo);
- }
- }
- int GerarPalavras2()
- {
- char szCaracteres[256];
- // Carregar Lista.
- char *pt = szCaracteres;
- for(int uA = 33; uA <= 127; uA++)
- {
- // Vamos gravar somente se é imprimível.
- if(isprint((char)uA))
- *pt++ = (char)uA;
- }
- // Define a quantidade máxima que o programa pode operar.
- const unsigned long QT_MAX_PALAVRAS = 1000000;
- const unsigned long QT_MAX_CARACTERES_POR_PALAVRA = 10;
- const unsigned long QT_MAX_CARACTERES_POR_LINHA = QT_MAX_CARACTERES_POR_PALAVRA + 1;
- // Podemos gerar até 10 caracteres por palavra.
- // Vamos alocar 1000000 de palavras.
- char *szPalavras = (char*) malloc(sizeof(char) * QT_MAX_CARACTERES_POR_LINHA * QT_MAX_PALAVRAS);
- *szPalavras = '\0';
- char *szPalavraCompleta = (char*) malloc(sizeof(char*) * QT_MAX_CARACTERES_POR_LINHA);
- // Quantidade de caracteres a ser gerado ao total.
- int qtCaracteres = strlen(szCaracteres) - 1;
- int contadorArquivo = 0;
- // Guarda a quantidade de caracteres já gerados.
- int qtCaracteresGerados = 0;
- int qtLinhas = 0;
- // Guarda o horário inicial.
- time_t tempoInicial = 0;
- time(&tempoInicial);
- // Aponta para o primeiro caractere da primeira palavra.
- pt = szPalavras;
- GerarCaracteres(pt, szPalavras, szPalavraCompleta, szCaracteres, 0, 4, 0,
- qtCaracteres, &qtCaracteresGerados, &qtLinhas, (time_t*)tempoInicial, &contadorArquivo);
- return 1;
- for(int uA = 0; uA <= qtCaracteres; uA++)
- {
- *pt++ = szCaracteres[uA];
- *pt++ = '\n';
- //strncat(pt, &szCaracteres[uA], 1);
- //strncat(pt, "\n", 1);
- //pt+=2;
- qtCaracteresGerados += 2;
- qtLinhas++;
- //printf("%i\n", qtLinhas);
- if(qtLinhas == 1000000)
- {
- // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- qtCaracteresGerados = 0;
- qtLinhas = 0;
- pt = &szPalavras[0];
- *pt = '\0';
- time(&tempoInicial);
- }
- for(int uB = 0; uB <= qtCaracteres; uB++)
- {
- *pt++ = szCaracteres[uA];
- *pt++ = szCaracteres[uB];
- *pt++ = '\n';
- qtCaracteresGerados += 3;
- qtLinhas++;
- //printf("%i\n", qtLinhas);
- if(qtLinhas == 1000000)
- {
- // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- qtCaracteresGerados = 0;
- qtLinhas = 0;
- pt = &szPalavras[0];
- *pt = '\0';
- time(&tempoInicial);
- }
- for(int uC = 0; uC <= qtCaracteres; uC++)
- {
- *pt++ = szCaracteres[uA];
- *pt++ = szCaracteres[uB];
- *pt++ = szCaracteres[uC];
- *pt++ = '\n';
- qtCaracteresGerados += 4;
- qtLinhas++;
- //printf("%i\n", qtLinhas);
- if(qtLinhas == 1000000)
- {
- // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- qtCaracteresGerados = 0;
- qtLinhas = 0;
- pt = &szPalavras[0];
- *pt = '\0';
- time(&tempoInicial);
- }
- for(int uD= 0; uD <= qtCaracteres; uD++)
- {
- *pt++ = szCaracteres[uA];
- *pt++ = szCaracteres[uB];
- *pt++ = szCaracteres[uC];
- *pt++ = szCaracteres[uD];
- *pt++ = '\n';
- qtCaracteresGerados += 5;
- qtLinhas++;
- //printf("%i\n", qtLinhas);
- if(qtLinhas == 1000000)
- {
- // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- qtCaracteresGerados = 0;
- qtLinhas = 0;
- pt = &szPalavras[0];
- *pt = '\0';
- time(&tempoInicial);
- }
- for(int uE= 0; uE <= qtCaracteres; uE++)
- {
- *pt++ = szCaracteres[uA];
- *pt++ = szCaracteres[uB];
- *pt++ = szCaracteres[uC];
- *pt++ = szCaracteres[uD];
- *pt++ = szCaracteres[uE];
- *pt++ = '\n';
- qtCaracteresGerados += 6;
- qtLinhas++;
- //printf("%i\n", qtLinhas);
- if(qtLinhas == 1000000)
- {
- // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- qtCaracteresGerados = 0;
- qtLinhas = 0;
- pt = &szPalavras[0];
- *pt = '\0';
- time(&tempoInicial);
- }
- for(int uF= 0; uF <= qtCaracteres; uF++)
- {
- *pt++ = szCaracteres[uA];
- *pt++ = szCaracteres[uB];
- *pt++ = szCaracteres[uC];
- *pt++ = szCaracteres[uD];
- *pt++ = szCaracteres[uE];
- *pt++ = szCaracteres[uF];
- *pt++ = '\n';
- qtCaracteresGerados += 7;
- qtLinhas++;
- //printf("%i\n", qtLinhas);
- if(qtLinhas == 1000000)
- {
- // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- qtCaracteresGerados = 0;
- qtLinhas = 0;
- pt = &szPalavras[0];
- *pt = '\0';
- time(&tempoInicial);
- }
- for(int uG= 0; uG <= qtCaracteres; uG++)
- {
- *pt++ = szCaracteres[uA];
- *pt++ = szCaracteres[uB];
- *pt++ = szCaracteres[uC];
- *pt++ = szCaracteres[uD];
- *pt++ = szCaracteres[uE];
- *pt++ = szCaracteres[uF];
- *pt++ = szCaracteres[uG];
- *pt++ = '\n';
- qtCaracteresGerados += 8;
- qtLinhas++;
- //printf("%i\n", qtLinhas);
- if(qtLinhas == 1000000)
- {
- // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- qtCaracteresGerados = 0;
- qtLinhas = 0;
- pt = &szPalavras[0];
- *pt = '\0';
- time(&tempoInicial);
- }
- }
- }
- }
- }
- }
- }
- }
- // Há linhas ainda, então devemos gravar as linhas restantes no arquivo.
- if(qtLinhas != 0)
- {
- printf("Ultimo arquivo:\n");
- // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- printf("Antes:\ncontadorArquivo = %i", contadorArquivo);
- GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- printf("Depois:\ncontadorArquivo = %i", contadorArquivo);
- qtCaracteresGerados = 0;
- qtLinhas = 0;
- pt = &szPalavras[0];
- *pt = '\0';
- time(&tempoInicial);
- }
- printf("Executado com sucesso.\n");
- }
- int GerarPalavras()
- {
- char szCaracteres[256];
- // Carregar Lista.
- char *pt = szCaracteres;
- for(int uA = 33; uA <= 126; uA++)
- {
- // Vamos gravar somente se é imprimível.
- if(isprint((char)uA))
- *pt++ = (char)uA;
- }
- // Podemos gerar até 10 caracteres por palavra.
- // Vamos alocar 1000000 de palavras.
- char *szPalavras = (char*) malloc(sizeof(char) * 11 * 1000000);
- *szPalavras = '\0';
- // Quantidade de caracteres a ser gerado ao total.
- int qtCaracteres = strlen(szCaracteres) - 1;
- unsigned long contadorArquivo = 0;
- // Guarda a quantidade de caracteres já gerados.
- unsigned long qtCaracteresGerados = 0;
- int qtLinhas = 0;
- // Guarda o horário inicial.
- time_t tempoInicial = 0;
- time(&tempoInicial);
- pt = szPalavras;
- for(int uA = 0; uA <= qtCaracteres; uA++)
- {
- *pt++ = szCaracteres[uA];
- *pt++ = '\n';
- qtCaracteresGerados += 2;
- qtLinhas++;
- //printf("%i\n", qtLinhas);
- if(qtLinhas == 1000000)
- {
- // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- qtCaracteresGerados = 0;
- qtLinhas = 0;
- pt = &szPalavras[0];
- *pt = '\0';
- time(&tempoInicial);
- }
- for(int uB = 0; uB <= qtCaracteres; uB++)
- {
- *pt++ = szCaracteres[uA];
- *pt++ = szCaracteres[uB];
- *pt++ = '\n';
- qtCaracteresGerados += 3;
- qtLinhas++;
- //printf("%i\n", qtLinhas);
- if(qtLinhas == 1000000)
- {
- // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- qtCaracteresGerados = 0;
- qtLinhas = 0;
- pt = &szPalavras[0];
- *pt = '\0';
- time(&tempoInicial);
- }
- for(int uC = 0; uC <= qtCaracteres; uC++)
- {
- *pt++ = szCaracteres[uA];
- *pt++ = szCaracteres[uB];
- *pt++ = szCaracteres[uC];
- *pt++ = '\n';
- qtCaracteresGerados += 4;
- qtLinhas++;
- //printf("%i\n", qtLinhas);
- if(qtLinhas == 1000000)
- {
- // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- qtCaracteresGerados = 0;
- qtLinhas = 0;
- pt = &szPalavras[0];
- *pt = '\0';
- time(&tempoInicial);
- }
- for(int uD= 0; uD <= qtCaracteres; uD++)
- {
- *pt++ = szCaracteres[uA];
- *pt++ = szCaracteres[uB];
- *pt++ = szCaracteres[uC];
- *pt++ = szCaracteres[uD];
- *pt++ = '\n';
- qtCaracteresGerados += 5;
- qtLinhas++;
- //printf("%i\n", qtLinhas);
- if(qtLinhas == 1000000)
- {
- // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- qtCaracteresGerados = 0;
- qtLinhas = 0;
- pt = &szPalavras[0];
- *pt = '\0';
- time(&tempoInicial);
- }
- for(int uE= 0; uE <= qtCaracteres; uE++)
- {
- *pt++ = szCaracteres[uA];
- *pt++ = szCaracteres[uB];
- *pt++ = szCaracteres[uC];
- *pt++ = szCaracteres[uD];
- *pt++ = szCaracteres[uE];
- *pt++ = '\n';
- qtCaracteresGerados += 6;
- qtLinhas++;
- //printf("%i\n", qtLinhas);
- if(qtLinhas == 1000000)
- {
- // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- qtCaracteresGerados = 0;
- qtLinhas = 0;
- pt = &szPalavras[0];
- *pt = '\0';
- time(&tempoInicial);
- }
- for(int uF= 0; uF <= qtCaracteres; uF++)
- {
- *pt++ = szCaracteres[uA];
- *pt++ = szCaracteres[uB];
- *pt++ = szCaracteres[uC];
- *pt++ = szCaracteres[uD];
- *pt++ = szCaracteres[uE];
- *pt++ = szCaracteres[uF];
- *pt++ = '\n';
- qtCaracteresGerados += 7;
- qtLinhas++;
- //printf("%i\n", qtLinhas);
- if(qtLinhas == 1000000)
- {
- // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- qtCaracteresGerados = 0;
- qtLinhas = 0;
- pt = &szPalavras[0];
- *pt = '\0';
- time(&tempoInicial);
- }
- for(int uG= 0; uG <= qtCaracteres; uG++)
- {
- *pt++ = szCaracteres[uA];
- *pt++ = szCaracteres[uB];
- *pt++ = szCaracteres[uC];
- *pt++ = szCaracteres[uD];
- *pt++ = szCaracteres[uE];
- *pt++ = szCaracteres[uF];
- *pt++ = szCaracteres[uG];
- *pt++ = '\n';
- qtCaracteresGerados += 8;
- qtLinhas++;
- //printf("%i\n", qtLinhas);
- if(qtLinhas == 1000000)
- {
- // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- qtCaracteresGerados = 0;
- qtLinhas = 0;
- pt = &szPalavras[0];
- *pt = '\0';
- time(&tempoInicial);
- }
- }
- }
- }
- }
- }
- }
- }
- if(qtLinhas != 0)
- {
- printf("Ultimo arquivo:\n");
- // Não iremos gravar, o último caractere '\n', por isto diminuímos 1.
- printf("Antes:\ncontadorArquivo = %li", contadorArquivo);
- GravarArquivo(szPalavras, qtCaracteresGerados-1, ++contadorArquivo, tempoInicial);
- printf("Depois:\ncontadorArquivo = %li", contadorArquivo);
- qtCaracteresGerados = 0;
- qtLinhas = 0;
- pt = &szPalavras[0];
- *pt = '\0';
- time(&tempoInicial);
- }
- printf("Executado com sucesso.\n");
- return 0;
- }
- int GerarQuina6Numeros()
- {
- // char szTemp[4096];
- int iContadorArquivo = 0;
- int iContadorLinha = 0;
- time_t tempoInicial, tempoFinal;
- tempoInicial = time(&tempoInicial);
- // Vamos calcular cada linha, cada linha está neste formato:
- // QUINA;7;_01_02_03_04_05_06_07;01;02;03;04;05;06;07
- // Haverá mais 1 caractere para o caractere nulo ou carriage return.
- int iQuantidade = strlen("QUINA;6;_01_02_03_04_05_06;01;02;03;04;05;06") + 1;
- // Haverá um total de 1 milhão de linhas, com cada linha tendo 52 caracteres, então,
- // iremos alocar primeiramente este espaço.
- char *szTodasLinhas = (char*)malloc(sizeof(char)* iQuantidade * 1000000);
- memset(szTodasLinhas, '\0', sizeof(char)* iQuantidade * 1000000);
- // Agora, iremos, alocar um ponteiro para ponteiro.
- char **szLinhas = (char**)malloc(sizeof(char*)* 1000000);
- // char *ptTeste = szLinhas[0];
- // Agora, vamos apontar cada ponteiro.
- for(int iA = 0; iA < 1000000; iA++)
- {
- szLinhas[iA] = szTodasLinhas + iA * iQuantidade;
- }
- for(int uA = 1; uA <= 80; uA++)
- for(int uB = uA+1; uB <= 80; uB++)
- for(int uC = uB + 1; uC <= 80; uC++)
- for(int uD = uC + 1; uD <= 80; uD++)
- for(int uE = uD + 1; uE <= 80; uE++)
- for(int uF = uE + 1; uF <= 80; uF++)
- //for(int uG = uF + 1; uG <= 80; uG++)
- {
- char *pt = &szLinhas[iContadorLinha][0];
- // char *ptUm = &szLinhas[iContadorLinha][0];
- // Devemos definir o primeiro caractere nulo.
- // Senão strcat, vai continuar de onde parou, pois reutilizaremos
- // o arranjo várias vezes.
- *pt = '\0';
- strcat(pt, "QUINA;6;");
- strncat(pt, szNumeroUnderline[uA], 3);
- strncat(pt, szNumeroUnderline[uB], 3);
- strncat(pt, szNumeroUnderline[uC], 3);
- strncat(pt, szNumeroUnderline[uD], 3);
- strncat(pt, szNumeroUnderline[uE], 3);
- strncat(pt, szNumeroUnderline[uF], 3);
- //strncat(pt, szNumeroUnderline[uG], 3);
- strncat(pt, szNumeroCSV[uA], 3);
- strncat(pt, szNumeroCSV[uB], 3);
- strncat(pt, szNumeroCSV[uC], 3);
- strncat(pt, szNumeroCSV[uD], 3);
- strncat(pt, szNumeroCSV[uE], 3);
- strncat(pt, szNumeroCSV[uF], 3);
- //strncat(pt, szNumeroCSV[uG], 3);
- // Coloca o caractere '\n' ao invés do nulo. '\0'.
- // Pois ao salvar, devemos gravar o caractere nulo.
- pt = strchr(pt, '\0');
- *pt = '\n';
- iContadorLinha++;
- if(iContadorLinha==1000000)
- {
- iContadorLinha = 0;
- char szTemp[20];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- char szArquivo[1024];
- char *pt = szArquivo;
- *pt = '\0';
- strcat(pt, "/mnt/Gerador_de_Palavras/quina_6_numeros_arq_");
- pt = strchr(szArquivo, '\0');
- iContadorArquivo++;
- sprintf(pt, "%.10d", iContadorArquivo);
- strcat(pt, "_inicio_");
- strcat(pt, szTemp);
- strcat(pt, "_fim_");
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- strcat(pt, szTemp);
- strcat(pt, ".txt");
- printf("Criando arquivo:\n%s\n", szArquivo);
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- fprintf(stderr, "Erro ao abrir arquivo.\n");
- perror("Erro foi: ");
- return -1;
- }
- printf("Gravando...\t");
- for(int uLinha = 0; uLinha < 1000000; uLinha++)
- fwrite(&szLinhas[uLinha][0], iQuantidade, 1, fArquivo);
- fclose(fArquivo);
- printf("Gravado.\n\n");
- }
- time(&tempoInicial);
- }
- // Toda vez que uma nova linha é gerada, iContadorLinha é incrementado.
- // Se ao final do loop, iContadorLinha for diferente de zero, quer dizer
- // que há linhas ainda não gravadas.
- // Então, iremos gravar da linha 0, até iContadorLinha - 1, pois
- // iContadorLinha é sempre 1 a mais
- if(iContadorLinha != 0)
- {
- char szTemp[20];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- char szArquivo[1024];
- char *pt = szArquivo;
- *pt = '\0';
- strcat(pt, "/mnt/Gerador_de_Palavras/quina_6_numeros_arq_");
- pt = strchr(szArquivo, '\0');
- iContadorArquivo++;
- sprintf(pt, "%.10d", iContadorArquivo);
- strcat(pt, "_inicio_");
- strcat(pt, szTemp);
- strcat(pt, "_fim_");
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- strcat(pt, szTemp);
- strcat(pt, ".txt");
- printf("Abrindo arquivo:\n%s\n", szArquivo);
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- fprintf(stderr, "Erro ao abrir arquivo.\n");
- perror("Erro foi: ");
- return -1;
- }
- printf("Gravando...\t");
- for(int uLinha = 0; uLinha < iContadorLinha; uLinha++)
- fwrite(&szLinhas[uLinha][0], iQuantidade, 1, fArquivo);
- fclose(fArquivo);
- printf("Gravado.\n\n");
- }
- time(&tempoInicial);
- printf("Executado com sucesso!!!");
- return 0;
- }
- int GerarQuina7Numeros()
- {
- // char szTemp[4096];
- int iContadorArquivo = 0;
- int iContadorLinha = 0;
- time_t tempoInicial, tempoFinal;
- tempoInicial = time(&tempoInicial);
- // Vamos calcular cada linha, cada linha está neste formato:
- // QUINA;7;_01_02_03_04_05_06_07;01;02;03;04;05;06;07
- // Haverá mais 1 caractere para o caractere nulo ou carriage return.
- int iQuantidade = strlen("QUINA;7;_01_02_03_04_05_06_07;01;02;03;04;05;06;07") + 1;
- // Haverá um total de 1 milhão de linhas, com cada linha tendo 52 caracteres, então,
- // iremos alocar primeiramente este espaço.
- char *szTodasLinhas = (char*)malloc(sizeof(char)* iQuantidade * 1000000);
- memset(szTodasLinhas, '\0', sizeof(char)* iQuantidade * 1000000);
- // Agora, iremos, alocar um ponteiro para ponteiro.
- char **szLinhas = (char**)malloc(sizeof(char*)* 1000000);
- // char *ptTeste = szLinhas[0];
- // Agora, vamos apontar cada ponteiro.
- for(int iA = 0; iA < 1000000; iA++)
- {
- szLinhas[iA] = szTodasLinhas + iA * iQuantidade;
- }
- char *pt = NULL;
- for(int uA = 1; uA <= 80; uA++)
- for(int uB = uA+1; uB <= 80; uB++)
- for(int uC = uB + 1; uC <= 80; uC++)
- for(int uD = uC + 1; uD <= 80; uD++)
- for(int uE = uD + 1; uE <= 80; uE++)
- for(int uF = uE + 1; uF <= 80; uF++)
- for(int uG = uF + 1; uG <= 80; uG++)
- {
- char *pt = &szLinhas[iContadorLinha][0];
- // char *ptUm = &szLinhas[iContadorLinha][0];
- // Devemos definir o primeiro caractere nulo.
- // Senão strcat, vai continuar de onde parou, pois reutilizaremos
- // o arranjo várias vezes.
- *pt = '\0';
- strcat(pt, "QUINA;7;");
- strncat(pt, szNumeroUnderline[uA], 3);
- strncat(pt, szNumeroUnderline[uB], 3);
- strncat(pt, szNumeroUnderline[uC], 3);
- strncat(pt, szNumeroUnderline[uD], 3);
- strncat(pt, szNumeroUnderline[uE], 3);
- strncat(pt, szNumeroUnderline[uF], 3);
- strncat(pt, szNumeroUnderline[uG], 3);
- strncat(pt, szNumeroCSV[uA], 3);
- strncat(pt, szNumeroCSV[uB], 3);
- strncat(pt, szNumeroCSV[uC], 3);
- strncat(pt, szNumeroCSV[uD], 3);
- strncat(pt, szNumeroCSV[uE], 3);
- strncat(pt, szNumeroCSV[uF], 3);
- strncat(pt, szNumeroCSV[uG], 3);
- // Coloca o caractere '\n' ao invés do nulo. '\0'.
- // Pois ao salvar, devemos gravar o caractere nulo.
- pt = strchr(pt, '\0');
- *pt = '\n';
- iContadorLinha++;
- if(iContadorLinha==1000000)
- {
- char szTemp[20];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- char szArquivo[1024];
- char *ptArquivo = szArquivo;
- *ptArquivo = '\0';
- strcat(ptArquivo, "/mnt/Gerador_de_Palavras/quina_7_numeros_arq_");
- ptArquivo = strchr(szArquivo, '\0');
- iContadorArquivo++;
- sprintf(ptArquivo, "%.10d", iContadorArquivo);
- strcat(ptArquivo, "_inicio_");
- strcat(ptArquivo, szTemp);
- strcat(ptArquivo, "_fim_");
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- strcat(ptArquivo, szTemp);
- strcat(ptArquivo, ".txt");
- printf("Abrindo arquivo:\n%s\n", szArquivo);
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- fprintf(stderr, "Erro ao abrir arquivo.\n");
- perror("Erro foi: ");
- return -1;
- }
- printf("Gravando...\t");
- for(int uLinha = 0; uLinha < iContadorLinha; uLinha++)
- fwrite(&szLinhas[uLinha][0], iQuantidade, 1, fArquivo);
- fclose(fArquivo);
- printf("Gravado.\n\n");
- }
- time(&tempoInicial);
- }
- // Toda vez que uma nova linha é gerada, iContadorLinha é incrementado.
- // Se ao final do loop, iContadorLinha for diferente de zero, quer dizer
- // que há linhas ainda não gravadas.
- // Então, iremos gravar da linha 0, até iContadorLinha - 1, pois
- // iContadorLinha é sempre 1 a mais
- if(iContadorLinha != 0)
- {
- *pt = '\0';
- char szTemp[20];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- char szArquivo[1024];
- char *ptArquivo = szArquivo;
- *ptArquivo = '\0';
- strcat(ptArquivo, "/mnt/Gerador_de_Palavras/quina_7_numeros_arq_");
- ptArquivo = strchr(szArquivo, '\0');
- iContadorArquivo++;
- sprintf(ptArquivo, "%.10d", iContadorArquivo);
- strcat(ptArquivo, "_inicio_");
- strcat(ptArquivo, szTemp);
- strcat(ptArquivo, "_fim_");
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- strcat(ptArquivo, szTemp);
- strcat(ptArquivo, ".txt");
- printf("Abrindo arquivo:\n%s\n", szArquivo);
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- fprintf(stderr, "Erro ao abrir arquivo.\n");
- perror("Erro foi: ");
- return -1;
- }
- printf("Gravando...\t");
- for(int uLinha = 0; uLinha < iContadorLinha; uLinha++)
- fwrite(&szLinhas[uLinha][0], iQuantidade, 1, fArquivo);
- fclose(fArquivo);
- printf("Gravado.\n\n");
- }
- time(&tempoInicial);
- printf("Executado com sucesso!!!");
- return 0;
- }
- // Esta função gera todos os inserts para o jogo lotofácil.
- int GerarLotofacil15Numeros()
- {
- // char szTemp[4096];
- int iContadorArquivo = 0;
- int iContadorLinha = 0;
- time_t tempoInicial, tempoFinal;
- tempoInicial = time(&tempoInicial);
- // Vamos calcular cada linha, cada linha está neste formato:
- // QUINA;7;_01_02_03_04_05_06_07;01;02;03;04;05;06;07
- // Haverá mais 1 caractere para o caractere nulo ou carriage return.
- // int iQuantidade = strlen("LOTOMANIA;50;_01_02_03_04_05_06_07_08_09_10"
- // "_01_02_03_04_05_06_07_08_09_10_01_02_03_04_05_06_07_08_09_10"
- // "_01_02_03_04_05_06_07_08_09_10_01_02_03_04_05_06_07_08_09_10"
- // ";01;02;03;04;05;06;07;08;09;10;01;02;03;04;05;06;07;08;09;10"
- // ";01;02;03;04;05;06;07;08;09;10;01;02;03;04;05;06;07;08;09;10"
- // ";01;02;03;04;05;06;07;08;09;10"
- // ) + 1;
- int iQuantidade = strlen("LOTOMANIA;50;;00"
- // "_00"
- // "_01_02_03_04_05_06_07_08_09_10"
- // "_11_12_13_14_15_16_17_18_19_20"
- // "_21_22_23_24_25_26_27_28_29_30"
- // "_31_32_33_34_35_36_37_38_39_40"
- // "_41_42_43_44_45_46_47_48_49;00"
- ";01;02;03;04;05;06;07;08;09;10"
- ";11;12;13;14;15;16;17;18;19;20"
- ";21;22;23;24;25;26;27;28;29;30"
- ";31;32;33;34;35;36;37;38;39;40"
- ";41;42;43;44;45;46;47;48;49") + 1;
- const int QT_CARACTERES = 3000;
- const int QT_PALAVRAS = 10000000;
- // Haverá um total de 1 milhão de linhas, com cada linha tendo 52 caracteres, então,
- // iremos alocar primeiramente este espaço.
- char *szTodasLinhas = (char*)malloc(sizeof(char)* QT_CARACTERES * QT_PALAVRAS);
- // Vamos verificar se foi possível alocar.
- if(!szTodasLinhas)
- {
- fprintf(stderr, "Não foi possível alocar a memória.\n");
- exit(-3);
- }
- memset(szTodasLinhas, '\0', sizeof(char)* iQuantidade * 1000000);
- // Agora, iremos, alocar um ponteiro para ponteiro.
- char **szLinhas = (char**)malloc(sizeof(char*)* 1000000);
- // char *ptTeste = szLinhas[0];
- // Agora, vamos apontar cada ponteiro.
- for(int iA = 0; iA < 1000000; iA++)
- {
- szLinhas[iA] = szTodasLinhas + iA * iQuantidade;
- }
- char *pt = NULL;
- for(int uA = 0; uA <= 99; uA++)
- for(int uB = uA + 1; uB <= 99; uB++)
- for(int uC = uB + 1; uC <= 99; uC++)
- for(int uD = uC + 1; uD <= 99; uD++)
- for(int uE = uD + 1; uE <= 99; uE++)
- for(int uF = uE + 1; uF <= 99; uF++)
- for(int uG = uF + 1; uG <= 99; uG++)
- for(int uH = uG + 1; uH <= 99; uH++)
- for(int uI = uH + 1; uI <= 99; uI++)
- for(int uJ = uI + 1; uJ <= 99; uJ++)
- for(int uK = uJ + 1; uK <= 99; uK++)
- for(int uL = uK + 1; uL <= 99; uL++)
- for(int uM = uL + 1; uM <= 99; uM++)
- for(int uN = uM + 1; uN <= 99; uN++)
- for(int uO = uN + 1; uO <= 99; uO++)
- for(int uP = uO + 1; uP <= 99; uP++)
- for(int uQ = uP + 1; uQ <= 99; uQ++)
- for(int uR = uQ + 1; uR <= 99; uR++)
- for(int uS = uR + 1; uS <= 99; uS++)
- for(int uT = uS + 1; uT <= 99; uT++)
- for(int uU = uT + 1; uU <= 99; uU++)
- for(int uV = uU + 1; uV <= 99; uV++)
- for(int uW = uV + 1; uW <= 99; uW++)
- for(int uX = uW + 1; uX <= 99; uX++)
- for(int uY = uX + 1; uY <= 99; uY++)
- for(int uZ = uY + 1; uZ <= 99; uZ++)
- for(int uAA = uZ + 1; uAA <= 99; uAA++)
- for(int uBB = uAA + 1; uBB <= 99; uBB++)
- for(int uCC = uBB + 1; uCC <= 99; uCC++)
- for(int uDD = uCC + 1; uDD <= 99; uDD++)
- for(int uEE = uDD + 1; uEE <= 99; uEE++)
- for(int uFF = uEE + 1; uFF <= 99; uFF++)
- for(int uGG = uFF + 1; uGG <= 99; uGG++)
- for(int uHH = uGG + 1; uHH <= 99; uHH++)
- for(int uII = uHH + 1; uII <= 99; uII++)
- for(int uJJ = uII + 1; uJJ <= 99; uJJ++)
- for(int uKK = uJJ + 1; uKK <= 99; uKK++)
- for(int uLL = uKK + 1; uLL <= 99; uLL++)
- for(int uMM = uLL + 1; uMM <= 99; uMM++)
- for(int uNN = uMM + 1; uNN <= 99; uNN++)
- for(int uOO = uNN + 1; uOO <= 99; uOO++)
- for(int uPP = uOO + 1; uPP <= 99; uPP++)
- for(int uQQ = uPP + 1; uQQ <= 99; uQQ++)
- for(int uRR = uQQ + 1; uRR <= 99; uRR++)
- for(int uSS = uRR + 1; uSS <= 99; uSS++)
- for(int uTT = uSS + 1; uTT <= 99; uTT++)
- for(int uUU = uTT + 1; uUU <= 99; uUU++)
- for(int uVV = uUU + 1; uVV <= 99; uVV++)
- for(int uWW = uVV + 1; uWW <= 99; uWW++)
- for(int uXX = uWW + 1; uXX <= 99; uXX++)
- {
- char *pt = &szLinhas[iContadorLinha][0];
- // char *ptUm = &szLinhas[iContadorLinha][0];
- // Devemos definir o primeiro caractere nulo.
- // Senão strcat, vai continuar de onde parou, pois reutilizaremos
- // o arranjo várias vezes.
- *pt = '\0';
- strncat(pt, "LOTOMANIA;50;", 13);
- pt += 13;
- *pt++ = szNumeroCSV[uA][0]; *pt++ = szNumeroCSV[uA][1]; *pt++ = szNumeroCSV[uA][2];
- *pt++ = szNumeroCSV[uB][0]; *pt++ = szNumeroCSV[uB][1]; *pt++ = szNumeroCSV[uB][2];
- *pt++ = szNumeroCSV[uC][0]; *pt++ = szNumeroCSV[uC][1]; *pt++ = szNumeroCSV[uC][2];
- *pt++ = szNumeroCSV[uD][0]; *pt++ = szNumeroCSV[uD][1]; *pt++ = szNumeroCSV[uD][2];
- *pt++ = szNumeroCSV[uE][0]; *pt++ = szNumeroCSV[uE][1]; *pt++ = szNumeroCSV[uE][2];
- *pt++ = szNumeroCSV[uF][0]; *pt++ = szNumeroCSV[uF][1]; *pt++ = szNumeroCSV[uF][2];
- *pt++ = szNumeroCSV[uG][0]; *pt++ = szNumeroCSV[uG][1]; *pt++ = szNumeroCSV[uG][2];
- *pt++ = szNumeroCSV[uH][0]; *pt++ = szNumeroCSV[uH][1]; *pt++ = szNumeroCSV[uH][2];
- *pt++ = szNumeroCSV[uI][0]; *pt++ = szNumeroCSV[uI][1]; *pt++ = szNumeroCSV[uI][2];
- *pt++ = szNumeroCSV[uJ][0]; *pt++ = szNumeroCSV[uJ][1]; *pt++ = szNumeroCSV[uJ][2];
- *pt++ = szNumeroCSV[uK][0]; *pt++ = szNumeroCSV[uK][1]; *pt++ = szNumeroCSV[uK][2];
- *pt++ = szNumeroCSV[uL][0]; *pt++ = szNumeroCSV[uL][1]; *pt++ = szNumeroCSV[uL][2];
- *pt++ = szNumeroCSV[uM][0]; *pt++ = szNumeroCSV[uM][1]; *pt++ = szNumeroCSV[uM][2];
- *pt++ = szNumeroCSV[uN][0]; *pt++ = szNumeroCSV[uN][1]; *pt++ = szNumeroCSV[uN][2];
- *pt++ = szNumeroCSV[uO][0]; *pt++ = szNumeroCSV[uO][1]; *pt++ = szNumeroCSV[uO][2];
- *pt++ = szNumeroCSV[uP][0]; *pt++ = szNumeroCSV[uP][1]; *pt++ = szNumeroCSV[uP][2];
- *pt++ = szNumeroCSV[uQ][0]; *pt++ = szNumeroCSV[uQ][1]; *pt++ = szNumeroCSV[uQ][2];
- *pt++ = szNumeroCSV[uR][0]; *pt++ = szNumeroCSV[uR][1]; *pt++ = szNumeroCSV[uR][2];
- *pt++ = szNumeroCSV[uS][0]; *pt++ = szNumeroCSV[uS][1]; *pt++ = szNumeroCSV[uS][2];
- *pt++ = szNumeroCSV[uT][0]; *pt++ = szNumeroCSV[uT][1]; *pt++ = szNumeroCSV[uT][2];
- *pt++ = szNumeroCSV[uU][0]; *pt++ = szNumeroCSV[uU][1]; *pt++ = szNumeroCSV[uU][2];
- *pt++ = szNumeroCSV[uV][0]; *pt++ = szNumeroCSV[uV][1]; *pt++ = szNumeroCSV[uV][2];
- *pt++ = szNumeroCSV[uW][0]; *pt++ = szNumeroCSV[uW][1]; *pt++ = szNumeroCSV[uW][2];
- *pt++ = szNumeroCSV[uX][0]; *pt++ = szNumeroCSV[uX][1]; *pt++ = szNumeroCSV[uX][2];
- *pt++ = szNumeroCSV[uY][0]; *pt++ = szNumeroCSV[uY][1]; *pt++ = szNumeroCSV[uY][2];
- *pt++ = szNumeroCSV[uZ][0]; *pt++ = szNumeroCSV[uZ][1]; *pt++ = szNumeroCSV[uZ][2];
- *pt++ = szNumeroCSV[uAA][0]; *pt++ = szNumeroCSV[uAA][1]; *pt++ = szNumeroCSV[uAA][2];
- *pt++ = szNumeroCSV[uBB][0]; *pt++ = szNumeroCSV[uBB][1]; *pt++ = szNumeroCSV[uBB][2];
- *pt++ = szNumeroCSV[uCC][0]; *pt++ = szNumeroCSV[uCC][1]; *pt++ = szNumeroCSV[uCC][2];
- *pt++ = szNumeroCSV[uDD][0]; *pt++ = szNumeroCSV[uDD][1]; *pt++ = szNumeroCSV[uDD][2];
- *pt++ = szNumeroCSV[uEE][0]; *pt++ = szNumeroCSV[uEE][1]; *pt++ = szNumeroCSV[uEE][2];
- *pt++ = szNumeroCSV[uFF][0]; *pt++ = szNumeroCSV[uFF][1]; *pt++ = szNumeroCSV[uFF][2];
- *pt++ = szNumeroCSV[uGG][0]; *pt++ = szNumeroCSV[uGG][1]; *pt++ = szNumeroCSV[uGG][2];
- *pt++ = szNumeroCSV[uHH][0]; *pt++ = szNumeroCSV[uHH][1]; *pt++ = szNumeroCSV[uHH][2];
- *pt++ = szNumeroCSV[uII][0]; *pt++ = szNumeroCSV[uII][1]; *pt++ = szNumeroCSV[uII][2];
- *pt++ = szNumeroCSV[uJJ][0]; *pt++ = szNumeroCSV[uJJ][1]; *pt++ = szNumeroCSV[uJJ][2];
- *pt++ = szNumeroCSV[uKK][0]; *pt++ = szNumeroCSV[uKK][1]; *pt++ = szNumeroCSV[uKK][2];
- *pt++ = szNumeroCSV[uLL][0]; *pt++ = szNumeroCSV[uLL][1]; *pt++ = szNumeroCSV[uLL][2];
- *pt++ = szNumeroCSV[uMM][0]; *pt++ = szNumeroCSV[uMM][1]; *pt++ = szNumeroCSV[uMM][2];
- *pt++ = szNumeroCSV[uNN][0]; *pt++ = szNumeroCSV[uNN][1]; *pt++ = szNumeroCSV[uNN][2];
- *pt++ = szNumeroCSV[uOO][0]; *pt++ = szNumeroCSV[uOO][1]; *pt++ = szNumeroCSV[uOO][2];
- *pt++ = szNumeroCSV[uPP][0]; *pt++ = szNumeroCSV[uPP][1]; *pt++ = szNumeroCSV[uPP][2];
- *pt++ = szNumeroCSV[uQQ][0]; *pt++ = szNumeroCSV[uQQ][1]; *pt++ = szNumeroCSV[uQQ][2];
- *pt++ = szNumeroCSV[uRR][0]; *pt++ = szNumeroCSV[uRR][1]; *pt++ = szNumeroCSV[uRR][2];
- *pt++ = szNumeroCSV[uSS][0]; *pt++ = szNumeroCSV[uSS][1]; *pt++ = szNumeroCSV[uSS][2];
- *pt++ = szNumeroCSV[uTT][0]; *pt++ = szNumeroCSV[uTT][1]; *pt++ = szNumeroCSV[uTT][2];
- *pt++ = szNumeroCSV[uUU][0]; *pt++ = szNumeroCSV[uUU][1]; *pt++ = szNumeroCSV[uUU][2];
- *pt++ = szNumeroCSV[uVV][0]; *pt++ = szNumeroCSV[uVV][1]; *pt++ = szNumeroCSV[uVV][2];
- *pt++ = szNumeroCSV[uWW][0]; *pt++ = szNumeroCSV[uWW][1]; *pt++ = szNumeroCSV[uWW][2];
- *pt++ = szNumeroCSV[uXX][0]; *pt++ = szNumeroCSV[uXX][1]; *pt++ = szNumeroCSV[uXX][2];
- *pt = '\n';
- iContadorLinha++;
- if(iContadorLinha==1000000)
- {
- // Evita que a última linha gere um caractere de nova linha.
- *pt = '\0';
- char szTemp[20];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- char szArquivo[1024];
- char *ptArquivo = szArquivo;
- *ptArquivo = '\0';
- strcat(ptArquivo, "/mnt/Gerador_de_Palavras/lotomania_arq_");
- ptArquivo = strchr(szArquivo, '\0');
- iContadorArquivo++;
- sprintf(ptArquivo, "%.10d", iContadorArquivo);
- strcat(ptArquivo, "_inicio_");
- strcat(ptArquivo, szTemp);
- strcat(ptArquivo, "_fim_");
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- strcat(ptArquivo, szTemp);
- strcat(ptArquivo, ".txt");
- printf("Abrindo arquivo:\n%s\n", szArquivo);
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- fprintf(stderr, "Erro ao abrir arquivo.\n");
- perror("Erro foi: ");
- return -1;
- }
- printf("Gravando...\t");
- for(int uLinha = 0; uLinha < iContadorLinha; uLinha++)
- fwrite(&szLinhas[uLinha][0], iQuantidade, 1, fArquivo);
- fclose(fArquivo);
- printf("Gravado.\n\n");
- // Reseta o contador da linha.
- iContadorLinha = 0;
- }
- time(&tempoInicial);
- }
- // Toda vez que uma nova linha é gerada, iContadorLinha é incrementado.
- // Se ao final do loop, iContadorLinha for diferente de zero, quer dizer
- // que há linhas ainda não gravadas.
- // Então, iremos gravar da linha 0, até iContadorLinha - 1, pois
- // iContadorLinha é sempre 1 a mais
- if(iContadorLinha != 0)
- {
- *pt = '\0';
- char szTemp[20];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- char szArquivo[1024];
- char *ptArquivo = szArquivo;
- *ptArquivo = '\0';
- strcat(ptArquivo, "/mnt/Gerador_de_Palavras/lotomania_arq_");
- ptArquivo = strchr(szArquivo, '\0');
- iContadorArquivo++;
- sprintf(ptArquivo, "%.10d", iContadorArquivo);
- strcat(ptArquivo, "_inicio_");
- strcat(ptArquivo, szTemp);
- strcat(ptArquivo, "_fim_");
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- strcat(ptArquivo, szTemp);
- strcat(ptArquivo, ".txt");
- printf("Abrindo arquivo:\n%s\n", szArquivo);
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- fprintf(stderr, "Erro ao abrir arquivo.\n");
- perror("Erro foi: ");
- return -1;
- }
- printf("Gravando...\t");
- for(int uLinha = 0; uLinha < iContadorLinha; uLinha++)
- fwrite(&szLinhas[uLinha][0], iQuantidade, 1, fArquivo);
- fclose(fArquivo);
- printf("Gravado.\n\n");
- // Reseta o contador da linha.
- iContadorLinha = 0;
- }
- time(&tempoInicial);
- printf("Executado com sucesso!!!");
- return 0;
- }
- int GerarKeno10Numeros()
- {
- const int QT_PALAVRAS = 1000000;
- const int MENOR_BOLA = 1;
- const int MAIOR_BOLA = 80;
- int iContadorArquivo = 0;
- int iContadorLinha = 0;
- time_t tempoInicial, tempoFinal;
- tempoInicial = time(&tempoInicial);
- // Vamos calcular cada linha, cada linha está neste formato:
- // QUINA;7;_01_02_03_04_05_06_07;01;02;03;04;05;06;07
- // Haverá mais 1 caractere para o caractere nulo ou carriage return.
- // int iQuantidade = strlen("LOTOMANIA;50;_01_02_03_04_05_06_07_08_09_10"
- // "_01_02_03_04_05_06_07_08_09_10_01_02_03_04_05_06_07_08_09_10"
- // "_01_02_03_04_05_06_07_08_09_10_01_02_03_04_05_06_07_08_09_10"
- // ";01;02;03;04;05;06;07;08;09;10;01;02;03;04;05;06;07;08;09;10"
- // ";01;02;03;04;05;06;07;08;09;10;01;02;03;04;05;06;07;08;09;10"
- // ";01;02;03;04;05;06;07;08;09;10"
- // ) + 1;
- int iQuantidade = strlen("KENO;10;;01;02;03;04;05;06;07;08;09;10") + 1;
- // Haverá um total de 1 milhão de linhas, com cada linha tendo 52 caracteres, então,
- // iremos alocar primeiramente este espaço.
- char *szTodasLinhas = (char*)malloc(sizeof(char)* iQuantidade * QT_PALAVRAS);
- // Vamos verificar se foi possível alocar.
- if(!szTodasLinhas)
- {
- fprintf(stderr, "Não foi possível alocar a memória.\n");
- exit(-3);
- }
- memset(szTodasLinhas, '\0', sizeof(char)* iQuantidade * QT_PALAVRAS);
- // Agora, iremos, alocar um ponteiro para ponteiro.
- char **szLinhas = (char**)malloc(sizeof(char*)* QT_PALAVRAS);
- // char *ptTeste = szLinhas[0];
- // Agora, vamos apontar cada ponteiro.
- for(int iA = 0; iA < QT_PALAVRAS; iA++)
- {
- szLinhas[iA] = szTodasLinhas + iA * iQuantidade;
- }
- char *pt = NULL;
- for(int uA = MENOR_BOLA; uA <= MAIOR_BOLA; uA++)
- for(int uB = uA + 1; uB <= MAIOR_BOLA; uB++)
- for(int uC = uB + 1; uC <= MAIOR_BOLA; uC++)
- for(int uD = uC + 1; uD <= MAIOR_BOLA; uD++)
- for(int uE = uD + 1; uE <= MAIOR_BOLA; uE++)
- for(int uF = uE + 1; uF <= MAIOR_BOLA; uF++)
- for(int uG = uF + 1; uG <= MAIOR_BOLA; uG++)
- for(int uH = uG + 1; uH <= MAIOR_BOLA; uH++)
- for(int uI = uH + 1; uI <= MAIOR_BOLA; uI++)
- for(int uJ = uI + 1; uJ <= MAIOR_BOLA; uJ++)
- {
- char *pt = &szLinhas[iContadorLinha][0];
- // char *ptUm = &szLinhas[iContadorLinha][0];
- // Devemos definir o primeiro caractere nulo.
- // Senão strcat, vai continuar de onde parou, pois reutilizaremos
- // o arranjo várias vezes.
- *pt = '\0';
- strncat(pt, "KENO;10;", 8);
- pt += 8;
- *pt++ = szNumeroCSV[uA][0]; *pt++ = szNumeroCSV[uA][1]; *pt++ = szNumeroCSV[uA][2];
- *pt++ = szNumeroCSV[uB][0]; *pt++ = szNumeroCSV[uB][1]; *pt++ = szNumeroCSV[uB][2];
- *pt++ = szNumeroCSV[uC][0]; *pt++ = szNumeroCSV[uC][1]; *pt++ = szNumeroCSV[uC][2];
- *pt++ = szNumeroCSV[uD][0]; *pt++ = szNumeroCSV[uD][1]; *pt++ = szNumeroCSV[uD][2];
- *pt++ = szNumeroCSV[uE][0]; *pt++ = szNumeroCSV[uE][1]; *pt++ = szNumeroCSV[uE][2];
- *pt++ = szNumeroCSV[uF][0]; *pt++ = szNumeroCSV[uF][1]; *pt++ = szNumeroCSV[uF][2];
- *pt++ = szNumeroCSV[uG][0]; *pt++ = szNumeroCSV[uG][1]; *pt++ = szNumeroCSV[uG][2];
- *pt++ = szNumeroCSV[uH][0]; *pt++ = szNumeroCSV[uH][1]; *pt++ = szNumeroCSV[uH][2];
- *pt++ = szNumeroCSV[uI][0]; *pt++ = szNumeroCSV[uI][1]; *pt++ = szNumeroCSV[uI][2];
- *pt++ = szNumeroCSV[uJ][0]; *pt++ = szNumeroCSV[uJ][1]; *pt++ = szNumeroCSV[uJ][2];
- *pt++ = '\n';
- iContadorLinha++;
- if(iContadorLinha==QT_PALAVRAS)
- {
- // Evita que a última linha gere um caractere de nova linha.
- *(--pt) = '\0';
- char szTemp[20];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- char szArquivo[1024];
- char *ptArquivo = szArquivo;
- *ptArquivo = '\0';
- strcat(ptArquivo, "/mnt/Gerador_de_Palavras/Keno_arq_");
- ptArquivo = strchr(szArquivo, '\0');
- iContadorArquivo++;
- sprintf(ptArquivo, "%.10d", iContadorArquivo);
- strcat(ptArquivo, "_inicio_");
- strcat(ptArquivo, szTemp);
- strcat(ptArquivo, "_fim_");
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- strcat(ptArquivo, szTemp);
- strcat(ptArquivo, ".txt");
- printf("Abrindo arquivo:\n%s\n", szArquivo);
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- fprintf(stderr, "Erro ao abrir arquivo.\n");
- perror("Erro foi: ");
- return -1;
- }
- printf("Gravando...\t");
- for(int uLinha = 0; uLinha < iContadorLinha; uLinha++)
- fwrite(&szLinhas[uLinha][0], iQuantidade, 1, fArquivo);
- fclose(fArquivo);
- printf("Gravado.\n\n");
- // Reseta o contador da linha.
- iContadorLinha = 0;
- }
- time(&tempoInicial);
- }
- // Toda vez que uma nova linha é gerada, iContadorLinha é incrementado.
- // Se ao final do loop, iContadorLinha for diferente de zero, quer dizer
- // que há linhas ainda não gravadas.
- // Então, iremos gravar da linha 0, até iContadorLinha - 1, pois
- // iContadorLinha é sempre 1 a mais
- if(iContadorLinha != 0)
- {
- *pt = '\0';
- char szTemp[20];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- char szArquivo[1024];
- char *ptArquivo = szArquivo;
- *ptArquivo = '\0';
- strcat(ptArquivo, "/mnt/Gerador_de_Palavras/keno_arq_");
- ptArquivo = strchr(szArquivo, '\0');
- iContadorArquivo++;
- sprintf(ptArquivo, "%.10d", iContadorArquivo);
- strcat(ptArquivo, "_inicio_");
- strcat(ptArquivo, szTemp);
- strcat(ptArquivo, "_fim_");
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- strcat(ptArquivo, szTemp);
- strcat(ptArquivo, ".txt");
- printf("Abrindo arquivo:\n%s\n", szArquivo);
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- fprintf(stderr, "Erro ao abrir arquivo.\n");
- perror("Erro foi: ");
- return -1;
- }
- printf("Gravando...\t");
- for(int uLinha = 0; uLinha < iContadorLinha; uLinha++)
- fwrite(&szLinhas[uLinha][0], iQuantidade, 1, fArquivo);
- fclose(fArquivo);
- printf("Gravado.\n\n");
- // Reseta o contador da linha.
- iContadorLinha = 0;
- }
- time(&tempoInicial);
- printf("Executado com sucesso!!!");
- return 0;
- }
- int GerarLotomania()
- {
- const int QT_PALAVRAS = 1000000;
- const int MENOR_BOLA = 0;
- const int MAIOR_BOLA = 99;
- int iContadorArquivo = 0;
- int iContadorLinha = 0;
- time_t tempoInicial, tempoFinal;
- tempoInicial = time(&tempoInicial);
- // Vamos calcular cada linha, cada linha está neste formato:
- // QUINA;7;_01_02_03_04_05_06_07;01;02;03;04;05;06;07
- // Haverá mais 1 caractere para o caractere nulo ou carriage return.
- // int iQuantidade = strlen("LOTOMANIA;50;_01_02_03_04_05_06_07_08_09_10"
- // "_01_02_03_04_05_06_07_08_09_10_01_02_03_04_05_06_07_08_09_10"
- // "_01_02_03_04_05_06_07_08_09_10_01_02_03_04_05_06_07_08_09_10"
- // ";01;02;03;04;05;06;07;08;09;10;01;02;03;04;05;06;07;08;09;10"
- // ";01;02;03;04;05;06;07;08;09;10;01;02;03;04;05;06;07;08;09;10"
- // ";01;02;03;04;05;06;07;08;09;10"
- // ) + 1;
- int iQuantidade = strlen("LOTOMANIA;50;;00"
- // "_00"
- // "_01_02_03_04_05_06_07_08_09_10"
- // "_11_12_13_14_15_16_17_18_19_20"
- // "_21_22_23_24_25_26_27_28_29_30"
- // "_31_32_33_34_35_36_37_38_39_40"
- // "_41_42_43_44_45_46_47_48_49;00"
- ";01;02;03;04;05;06;07;08;09;10"
- ";11;12;13;14;15;16;17;18;19;20"
- ";21;22;23;24;25;26;27;28;29;30"
- ";31;32;33;34;35;36;37;38;39;40"
- ";41;42;43;44;45;46;47;48;49") + 1;
- // Haverá um total de 1 milhão de linhas, com cada linha tendo 52 caracteres, então,
- // iremos alocar primeiramente este espaço.
- char *szTodasLinhas = (char*)malloc(sizeof(char)* iQuantidade * 1000000);
- // Vamos verificar se foi possível alocar.
- if(!szTodasLinhas)
- {
- fprintf(stderr, "Não foi possível alocar a memória.\n");
- exit(-3);
- }
- memset(szTodasLinhas, '\0', sizeof(char)* iQuantidade * 1000000);
- // Agora, iremos, alocar um ponteiro para ponteiro.
- char **szLinhas = (char**)malloc(sizeof(char*)* 1000000);
- // char *ptTeste = szLinhas[0];
- // Agora, vamos apontar cada ponteiro.
- for(int iA = 0; iA < 1000000; iA++)
- {
- szLinhas[iA] = szTodasLinhas + iA * iQuantidade;
- }
- char *pt = NULL;
- for(int uA = 0; uA <= MAIOR_BOLA; uA++)
- for(int uB = uA + 1; uB <= MAIOR_BOLA; uB++)
- for(int uC = uB + 1; uC <= MAIOR_BOLA; uC++)
- for(int uD = uC + 1; uD <= MAIOR_BOLA; uD++)
- for(int uE = uD + 1; uE <= MAIOR_BOLA; uE++)
- for(int uF = uE + 1; uF <= MAIOR_BOLA; uF++)
- for(int uG = uF + 1; uG <= MAIOR_BOLA; uG++)
- for(int uH = uG + 1; uH <= MAIOR_BOLA; uH++)
- for(int uI = uH + 1; uI <= MAIOR_BOLA; uI++)
- for(int uJ = uI + 1; uJ <= MAIOR_BOLA; uJ++)
- for(int uK = uJ + 1; uK <= MAIOR_BOLA; uK++)
- for(int uL = uK + 1; uL <= MAIOR_BOLA; uL++)
- for(int uM = uL + 1; uM <= MAIOR_BOLA; uM++)
- for(int uN = uM + 1; uN <= MAIOR_BOLA; uN++)
- for(int uO = uN + 1; uO <= MAIOR_BOLA; uO++)
- for(int uP = uO + 1; uP <= MAIOR_BOLA; uP++)
- for(int uQ = uP + 1; uQ <= MAIOR_BOLA; uQ++)
- for(int uR = uQ + 1; uR <= MAIOR_BOLA; uR++)
- for(int uS = uR + 1; uS <= MAIOR_BOLA; uS++)
- for(int uT = uS + 1; uT <= MAIOR_BOLA; uT++)
- for(int uU = uT + 1; uU <= MAIOR_BOLA; uU++)
- for(int uV = uU + 1; uV <= MAIOR_BOLA; uV++)
- for(int uW = uV + 1; uW <= MAIOR_BOLA; uW++)
- for(int uX = uW + 1; uX <= MAIOR_BOLA; uX++)
- for(int uY = uX + 1; uY <= MAIOR_BOLA; uY++)
- for(int uZ = uY + 1; uZ <= MAIOR_BOLA; uZ++)
- for(int uAA = uZ + 1; uAA <= MAIOR_BOLA; uAA++)
- for(int uBB = uAA + 1; uBB <= MAIOR_BOLA; uBB++)
- for(int uCC = uBB + 1; uCC <= MAIOR_BOLA; uCC++)
- for(int uDD = uCC + 1; uDD <= MAIOR_BOLA; uDD++)
- for(int uEE = uDD + 1; uEE <= MAIOR_BOLA; uEE++)
- for(int uFF = uEE + 1; uFF <= MAIOR_BOLA; uFF++)
- for(int uGG = uFF + 1; uGG <= MAIOR_BOLA; uGG++)
- for(int uHH = uGG + 1; uHH <= MAIOR_BOLA; uHH++)
- for(int uII = uHH + 1; uII <= MAIOR_BOLA; uII++)
- for(int uJJ = uII + 1; uJJ <= MAIOR_BOLA; uJJ++)
- for(int uKK = uJJ + 1; uKK <= MAIOR_BOLA; uKK++)
- for(int uLL = uKK + 1; uLL <= MAIOR_BOLA; uLL++)
- for(int uMM = uLL + 1; uMM <= MAIOR_BOLA; uMM++)
- for(int uNN = uMM + 1; uNN <= MAIOR_BOLA; uNN++)
- for(int uOO = uNN + 1; uOO <= MAIOR_BOLA; uOO++)
- for(int uPP = uOO + 1; uPP <= MAIOR_BOLA; uPP++)
- for(int uQQ = uPP + 1; uQQ <= MAIOR_BOLA; uQQ++)
- for(int uRR = uQQ + 1; uRR <= MAIOR_BOLA; uRR++)
- for(int uSS = uRR + 1; uSS <= MAIOR_BOLA; uSS++)
- for(int uTT = uSS + 1; uTT <= MAIOR_BOLA; uTT++)
- for(int uUU = uTT + 1; uUU <= MAIOR_BOLA; uUU++)
- for(int uVV = uUU + 1; uVV <= MAIOR_BOLA; uVV++)
- for(int uWW = uVV + 1; uWW <= MAIOR_BOLA; uWW++)
- for(int uXX = uWW + 1; uXX <= MAIOR_BOLA; uXX++)
- {
- char *pt = &szLinhas[iContadorLinha][0];
- // char *ptUm = &szLinhas[iContadorLinha][0];
- // Devemos definir o primeiro caractere nulo.
- // Senão strcat, vai continuar de onde parou, pois reutilizaremos
- // o arranjo várias vezes.
- *pt = '\0';
- strncat(pt, "LOTOMANIA;50;", 13);
- pt += 13;
- *pt++ = szNumeroCSV[uA][0]; *pt++ = szNumeroCSV[uA][1]; *pt++ = szNumeroCSV[uA][2];
- *pt++ = szNumeroCSV[uB][0]; *pt++ = szNumeroCSV[uB][1]; *pt++ = szNumeroCSV[uB][2];
- *pt++ = szNumeroCSV[uC][0]; *pt++ = szNumeroCSV[uC][1]; *pt++ = szNumeroCSV[uC][2];
- *pt++ = szNumeroCSV[uD][0]; *pt++ = szNumeroCSV[uD][1]; *pt++ = szNumeroCSV[uD][2];
- *pt++ = szNumeroCSV[uE][0]; *pt++ = szNumeroCSV[uE][1]; *pt++ = szNumeroCSV[uE][2];
- *pt++ = szNumeroCSV[uF][0]; *pt++ = szNumeroCSV[uF][1]; *pt++ = szNumeroCSV[uF][2];
- *pt++ = szNumeroCSV[uG][0]; *pt++ = szNumeroCSV[uG][1]; *pt++ = szNumeroCSV[uG][2];
- *pt++ = szNumeroCSV[uH][0]; *pt++ = szNumeroCSV[uH][1]; *pt++ = szNumeroCSV[uH][2];
- *pt++ = szNumeroCSV[uI][0]; *pt++ = szNumeroCSV[uI][1]; *pt++ = szNumeroCSV[uI][2];
- *pt++ = szNumeroCSV[uJ][0]; *pt++ = szNumeroCSV[uJ][1]; *pt++ = szNumeroCSV[uJ][2];
- *pt++ = szNumeroCSV[uK][0]; *pt++ = szNumeroCSV[uK][1]; *pt++ = szNumeroCSV[uK][2];
- *pt++ = szNumeroCSV[uL][0]; *pt++ = szNumeroCSV[uL][1]; *pt++ = szNumeroCSV[uL][2];
- *pt++ = szNumeroCSV[uM][0]; *pt++ = szNumeroCSV[uM][1]; *pt++ = szNumeroCSV[uM][2];
- *pt++ = szNumeroCSV[uN][0]; *pt++ = szNumeroCSV[uN][1]; *pt++ = szNumeroCSV[uN][2];
- *pt++ = szNumeroCSV[uO][0]; *pt++ = szNumeroCSV[uO][1]; *pt++ = szNumeroCSV[uO][2];
- *pt++ = szNumeroCSV[uP][0]; *pt++ = szNumeroCSV[uP][1]; *pt++ = szNumeroCSV[uP][2];
- *pt++ = szNumeroCSV[uQ][0]; *pt++ = szNumeroCSV[uQ][1]; *pt++ = szNumeroCSV[uQ][2];
- *pt++ = szNumeroCSV[uR][0]; *pt++ = szNumeroCSV[uR][1]; *pt++ = szNumeroCSV[uR][2];
- *pt++ = szNumeroCSV[uS][0]; *pt++ = szNumeroCSV[uS][1]; *pt++ = szNumeroCSV[uS][2];
- *pt++ = szNumeroCSV[uT][0]; *pt++ = szNumeroCSV[uT][1]; *pt++ = szNumeroCSV[uT][2];
- *pt++ = szNumeroCSV[uU][0]; *pt++ = szNumeroCSV[uU][1]; *pt++ = szNumeroCSV[uU][2];
- *pt++ = szNumeroCSV[uV][0]; *pt++ = szNumeroCSV[uV][1]; *pt++ = szNumeroCSV[uV][2];
- *pt++ = szNumeroCSV[uW][0]; *pt++ = szNumeroCSV[uW][1]; *pt++ = szNumeroCSV[uW][2];
- *pt++ = szNumeroCSV[uX][0]; *pt++ = szNumeroCSV[uX][1]; *pt++ = szNumeroCSV[uX][2];
- *pt++ = szNumeroCSV[uY][0]; *pt++ = szNumeroCSV[uY][1]; *pt++ = szNumeroCSV[uY][2];
- *pt++ = szNumeroCSV[uZ][0]; *pt++ = szNumeroCSV[uZ][1]; *pt++ = szNumeroCSV[uZ][2];
- *pt++ = szNumeroCSV[uAA][0]; *pt++ = szNumeroCSV[uAA][1]; *pt++ = szNumeroCSV[uAA][2];
- *pt++ = szNumeroCSV[uBB][0]; *pt++ = szNumeroCSV[uBB][1]; *pt++ = szNumeroCSV[uBB][2];
- *pt++ = szNumeroCSV[uCC][0]; *pt++ = szNumeroCSV[uCC][1]; *pt++ = szNumeroCSV[uCC][2];
- *pt++ = szNumeroCSV[uDD][0]; *pt++ = szNumeroCSV[uDD][1]; *pt++ = szNumeroCSV[uDD][2];
- *pt++ = szNumeroCSV[uEE][0]; *pt++ = szNumeroCSV[uEE][1]; *pt++ = szNumeroCSV[uEE][2];
- *pt++ = szNumeroCSV[uFF][0]; *pt++ = szNumeroCSV[uFF][1]; *pt++ = szNumeroCSV[uFF][2];
- *pt++ = szNumeroCSV[uGG][0]; *pt++ = szNumeroCSV[uGG][1]; *pt++ = szNumeroCSV[uGG][2];
- *pt++ = szNumeroCSV[uHH][0]; *pt++ = szNumeroCSV[uHH][1]; *pt++ = szNumeroCSV[uHH][2];
- *pt++ = szNumeroCSV[uII][0]; *pt++ = szNumeroCSV[uII][1]; *pt++ = szNumeroCSV[uII][2];
- *pt++ = szNumeroCSV[uJJ][0]; *pt++ = szNumeroCSV[uJJ][1]; *pt++ = szNumeroCSV[uJJ][2];
- *pt++ = szNumeroCSV[uKK][0]; *pt++ = szNumeroCSV[uKK][1]; *pt++ = szNumeroCSV[uKK][2];
- *pt++ = szNumeroCSV[uLL][0]; *pt++ = szNumeroCSV[uLL][1]; *pt++ = szNumeroCSV[uLL][2];
- *pt++ = szNumeroCSV[uMM][0]; *pt++ = szNumeroCSV[uMM][1]; *pt++ = szNumeroCSV[uMM][2];
- *pt++ = szNumeroCSV[uNN][0]; *pt++ = szNumeroCSV[uNN][1]; *pt++ = szNumeroCSV[uNN][2];
- *pt++ = szNumeroCSV[uOO][0]; *pt++ = szNumeroCSV[uOO][1]; *pt++ = szNumeroCSV[uOO][2];
- *pt++ = szNumeroCSV[uPP][0]; *pt++ = szNumeroCSV[uPP][1]; *pt++ = szNumeroCSV[uPP][2];
- *pt++ = szNumeroCSV[uQQ][0]; *pt++ = szNumeroCSV[uQQ][1]; *pt++ = szNumeroCSV[uQQ][2];
- *pt++ = szNumeroCSV[uRR][0]; *pt++ = szNumeroCSV[uRR][1]; *pt++ = szNumeroCSV[uRR][2];
- *pt++ = szNumeroCSV[uSS][0]; *pt++ = szNumeroCSV[uSS][1]; *pt++ = szNumeroCSV[uSS][2];
- *pt++ = szNumeroCSV[uTT][0]; *pt++ = szNumeroCSV[uTT][1]; *pt++ = szNumeroCSV[uTT][2];
- *pt++ = szNumeroCSV[uUU][0]; *pt++ = szNumeroCSV[uUU][1]; *pt++ = szNumeroCSV[uUU][2];
- *pt++ = szNumeroCSV[uVV][0]; *pt++ = szNumeroCSV[uVV][1]; *pt++ = szNumeroCSV[uVV][2];
- *pt++ = szNumeroCSV[uWW][0]; *pt++ = szNumeroCSV[uWW][1]; *pt++ = szNumeroCSV[uWW][2];
- *pt++ = szNumeroCSV[uXX][0]; *pt++ = szNumeroCSV[uXX][1]; *pt++ = szNumeroCSV[uXX][2];
- *pt++ = '\n';
- iContadorLinha++;
- if(iContadorLinha==1000000)
- {
- // Evita que a última linha gere um caractere de nova linha.
- *(--pt) = '\0';
- char szTemp[20];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- char szArquivo[1024];
- char *ptArquivo = szArquivo;
- *ptArquivo = '\0';
- strcat(ptArquivo, "/mnt/Gerador_de_Palavras/lotomania_arq_");
- ptArquivo = strchr(szArquivo, '\0');
- iContadorArquivo++;
- sprintf(ptArquivo, "%.10d", iContadorArquivo);
- strcat(ptArquivo, "_inicio_");
- strcat(ptArquivo, szTemp);
- strcat(ptArquivo, "_fim_");
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- strcat(ptArquivo, szTemp);
- strcat(ptArquivo, ".txt");
- printf("Abrindo arquivo:\n%s\n", szArquivo);
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- fprintf(stderr, "Erro ao abrir arquivo.\n");
- perror("Erro foi: ");
- return -1;
- }
- printf("Gravando...\t");
- for(int uLinha = 0; uLinha < iContadorLinha; uLinha++)
- fwrite(&szLinhas[uLinha][0], iQuantidade, 1, fArquivo);
- fclose(fArquivo);
- printf("Gravado.\n\n");
- // Reseta o contador da linha.
- iContadorLinha = 0;
- }
- time(&tempoInicial);
- }
- // Toda vez que uma nova linha é gerada, iContadorLinha é incrementado.
- // Se ao final do loop, iContadorLinha for diferente de zero, quer dizer
- // que há linhas ainda não gravadas.
- // Então, iremos gravar da linha 0, até iContadorLinha - 1, pois
- // iContadorLinha é sempre 1 a mais
- if(iContadorLinha != 0)
- {
- *pt = '\0';
- char szTemp[20];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- char szArquivo[1024];
- char *ptArquivo = szArquivo;
- *ptArquivo = '\0';
- strcat(ptArquivo, "/mnt/Gerador_de_Palavras/lotomania_arq_");
- ptArquivo = strchr(szArquivo, '\0');
- iContadorArquivo++;
- sprintf(ptArquivo, "%.10d", iContadorArquivo);
- strcat(ptArquivo, "_inicio_");
- strcat(ptArquivo, szTemp);
- strcat(ptArquivo, "_fim_");
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- strcat(ptArquivo, szTemp);
- strcat(ptArquivo, ".txt");
- printf("Abrindo arquivo:\n%s\n", szArquivo);
- FILE * fArquivo = fopen(szArquivo, "w");
- if(!fArquivo)
- {
- fprintf(stderr, "Erro ao abrir arquivo.\n");
- perror("Erro foi: ");
- return -1;
- }
- printf("Gravando...\t");
- for(int uLinha = 0; uLinha < iContadorLinha; uLinha++)
- fwrite(&szLinhas[uLinha][0], iQuantidade, 1, fArquivo);
- fclose(fArquivo);
- printf("Gravado.\n\n");
- // Reseta o contador da linha.
- iContadorLinha = 0;
- }
- time(&tempoInicial);
- printf("Executado com sucesso!!!");
- return 0;
- }
- int GerarLotomania_2()
- {
- const int QT_PALAVRAS = 50000000;
- const int MENOR_BOLA = 0;
- const int MAIOR_BOLA = 99;
- int iContadorArquivo = 0;
- int iContadorLinha = 0;
- time_t tempoInicial, tempoFinal;
- tempoInicial = time(&tempoInicial);
- // Vamos calcular cada linha, cada linha está neste formato:
- // QUINA;7;_01_02_03_04_05_06_07;01;02;03;04;05;06;07
- // Haverá mais 1 caractere para o caractere nulo ou carriage return.
- // int iQuantidade = strlen("LOTOMANIA;50;_01_02_03_04_05_06_07_08_09_10"
- // "_01_02_03_04_05_06_07_08_09_10_01_02_03_04_05_06_07_08_09_10"
- // "_01_02_03_04_05_06_07_08_09_10_01_02_03_04_05_06_07_08_09_10"
- // ";01;02;03;04;05;06;07;08;09;10;01;02;03;04;05;06;07;08;09;10"
- // ";01;02;03;04;05;06;07;08;09;10;01;02;03;04;05;06;07;08;09;10"
- // ";01;02;03;04;05;06;07;08;09;10"
- // ) + 1;
- int iQuantidade = strlen("LOTOMANIA;50;;00"
- // "_00"
- // "_01_02_03_04_05_06_07_08_09_10"
- // "_11_12_13_14_15_16_17_18_19_20"
- // "_21_22_23_24_25_26_27_28_29_30"
- // "_31_32_33_34_35_36_37_38_39_40"
- // "_41_42_43_44_45_46_47_48_49;00"
- ";01;02;03;04;05;06;07;08;09;10"
- ";11;12;13;14;15;16;17;18;19;20"
- ";21;22;23;24;25;26;27;28;29;30"
- ";31;32;33;34;35;36;37;38;39;40"
- ";41;42;43;44;45;46;47;48;49") + 1;
- // Haverá um total de 1 milhão de linhas, com cada linha tendo 52 caracteres, então,
- // iremos alocar primeiramente este espaço.
- char *szTodasLinhas = (char*)malloc(sizeof(char)* iQuantidade * QT_PALAVRAS);
- // Vamos verificar se foi possível alocar.
- if(!szTodasLinhas)
- {
- fprintf(stderr, "Não foi possível alocar a memória.\n");
- exit(-3);
- }
- memset(szTodasLinhas, '\0', sizeof(char)* iQuantidade * QT_PALAVRAS);
- // Agora, iremos, alocar um ponteiro para ponteiro.
- char **szLinhas = (char**)malloc(sizeof(char*)* QT_PALAVRAS);
- // char *ptTeste = szLinhas[0];
- // Agora, vamos apontar cada ponteiro.
- for(int iA = 0; iA < QT_PALAVRAS; iA++)
- {
- szLinhas[iA] = szTodasLinhas + iA * iQuantidade;
- }
- //char *pt = NULL;
- char szTemp[20];
- for(int uA = 0; uA <= MAIOR_BOLA; uA++)
- for(int uB = uA + 1; uB <= MAIOR_BOLA; uB++)
- for(int uC = uB + 1; uC <= MAIOR_BOLA; uC++)
- for(int uD = uC + 1; uD <= MAIOR_BOLA; uD++)
- for(int uE = uD + 1; uE <= MAIOR_BOLA; uE++)
- for(int uF = uE + 1; uF <= MAIOR_BOLA; uF++)
- for(int uG = uF + 1; uG <= MAIOR_BOLA; uG++)
- for(int uH = uG + 1; uH <= MAIOR_BOLA; uH++)
- for(int uI = uH + 1; uI <= MAIOR_BOLA; uI++)
- for(int uJ = uI + 1; uJ <= MAIOR_BOLA; uJ++)
- for(int uK = uJ + 1; uK <= MAIOR_BOLA; uK++)
- for(int uL = uK + 1; uL <= MAIOR_BOLA; uL++)
- for(int uM = uL + 1; uM <= MAIOR_BOLA; uM++)
- for(int uN = uM + 1; uN <= MAIOR_BOLA; uN++)
- for(int uO = uN + 1; uO <= MAIOR_BOLA; uO++)
- for(int uP = uO + 1; uP <= MAIOR_BOLA; uP++)
- for(int uQ = uP + 1; uQ <= MAIOR_BOLA; uQ++)
- for(int uR = uQ + 1; uR <= MAIOR_BOLA; uR++)
- for(int uS = uR + 1; uS <= MAIOR_BOLA; uS++)
- for(int uT = uS + 1; uT <= MAIOR_BOLA; uT++)
- for(int uU = uT + 1; uU <= MAIOR_BOLA; uU++)
- for(int uV = uU + 1; uV <= MAIOR_BOLA; uV++)
- for(int uW = uV + 1; uW <= MAIOR_BOLA; uW++)
- for(int uX = uW + 1; uX <= MAIOR_BOLA; uX++)
- for(int uY = uX + 1; uY <= MAIOR_BOLA; uY++)
- for(int uZ = uY + 1; uZ <= MAIOR_BOLA; uZ++)
- for(int uAA = uZ + 1; uAA <= MAIOR_BOLA; uAA++)
- for(int uBB = uAA + 1; uBB <= MAIOR_BOLA; uBB++)
- for(int uCC = uBB + 1; uCC <= MAIOR_BOLA; uCC++)
- for(int uDD = uCC + 1; uDD <= MAIOR_BOLA; uDD++)
- for(int uEE = uDD + 1; uEE <= MAIOR_BOLA; uEE++)
- for(int uFF = uEE + 1; uFF <= MAIOR_BOLA; uFF++)
- for(int uGG = uFF + 1; uGG <= MAIOR_BOLA; uGG++)
- for(int uHH = uGG + 1; uHH <= MAIOR_BOLA; uHH++)
- for(int uII = uHH + 1; uII <= MAIOR_BOLA; uII++)
- for(int uJJ = uII + 1; uJJ <= MAIOR_BOLA; uJJ++)
- for(int uKK = uJJ + 1; uKK <= MAIOR_BOLA; uKK++)
- for(int uLL = uKK + 1; uLL <= MAIOR_BOLA; uLL++)
- for(int uMM = uLL + 1; uMM <= MAIOR_BOLA; uMM++)
- for(int uNN = uMM + 1; uNN <= MAIOR_BOLA; uNN++)
- for(int uOO = uNN + 1; uOO <= MAIOR_BOLA; uOO++)
- for(int uPP = uOO + 1; uPP <= MAIOR_BOLA; uPP++)
- for(int uQQ = uPP + 1; uQQ <= MAIOR_BOLA; uQQ++)
- for(int uRR = uQQ + 1; uRR <= MAIOR_BOLA; uRR++)
- for(int uSS = uRR + 1; uSS <= MAIOR_BOLA; uSS++)
- for(int uTT = uSS + 1; uTT <= MAIOR_BOLA; uTT++)
- for(int uUU = uTT + 1; uUU <= MAIOR_BOLA; uUU++)
- for(int uVV = uUU + 1; uVV <= MAIOR_BOLA; uVV++)
- for(int uWW = uVV + 1; uWW <= MAIOR_BOLA; uWW++)
- for(int uXX = uWW + 1; uXX <= MAIOR_BOLA; uXX++)
- {
- char *pt = &szLinhas[iContadorLinha][0];
- // char *ptUm = &szLinhas[iContadorLinha][0];
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoInicial));
- // Devemos definir o primeiro caractere nulo.
- // Senão strcat, vai continuar de onde parou, pois reutilizaremos
- // o arranjo várias vezes.
- *pt = '\0';
- strncat(pt, "LOTOMANIA;50;", 13);
- pt += 13;
- *pt++ = szNumeroCSV[uA][0]; *pt++ = szNumeroCSV[uA][1]; *pt++ = szNumeroCSV[uA][2];
- *pt++ = szNumeroCSV[uB][0]; *pt++ = szNumeroCSV[uB][1]; *pt++ = szNumeroCSV[uB][2];
- *pt++ = szNumeroCSV[uC][0]; *pt++ = szNumeroCSV[uC][1]; *pt++ = szNumeroCSV[uC][2];
- *pt++ = szNumeroCSV[uD][0]; *pt++ = szNumeroCSV[uD][1]; *pt++ = szNumeroCSV[uD][2];
- *pt++ = szNumeroCSV[uE][0]; *pt++ = szNumeroCSV[uE][1]; *pt++ = szNumeroCSV[uE][2];
- *pt++ = szNumeroCSV[uF][0]; *pt++ = szNumeroCSV[uF][1]; *pt++ = szNumeroCSV[uF][2];
- *pt++ = szNumeroCSV[uG][0]; *pt++ = szNumeroCSV[uG][1]; *pt++ = szNumeroCSV[uG][2];
- *pt++ = szNumeroCSV[uH][0]; *pt++ = szNumeroCSV[uH][1]; *pt++ = szNumeroCSV[uH][2];
- *pt++ = szNumeroCSV[uI][0]; *pt++ = szNumeroCSV[uI][1]; *pt++ = szNumeroCSV[uI][2];
- *pt++ = szNumeroCSV[uJ][0]; *pt++ = szNumeroCSV[uJ][1]; *pt++ = szNumeroCSV[uJ][2];
- *pt++ = szNumeroCSV[uK][0]; *pt++ = szNumeroCSV[uK][1]; *pt++ = szNumeroCSV[uK][2];
- *pt++ = szNumeroCSV[uL][0]; *pt++ = szNumeroCSV[uL][1]; *pt++ = szNumeroCSV[uL][2];
- *pt++ = szNumeroCSV[uM][0]; *pt++ = szNumeroCSV[uM][1]; *pt++ = szNumeroCSV[uM][2];
- *pt++ = szNumeroCSV[uN][0]; *pt++ = szNumeroCSV[uN][1]; *pt++ = szNumeroCSV[uN][2];
- *pt++ = szNumeroCSV[uO][0]; *pt++ = szNumeroCSV[uO][1]; *pt++ = szNumeroCSV[uO][2];
- *pt++ = szNumeroCSV[uP][0]; *pt++ = szNumeroCSV[uP][1]; *pt++ = szNumeroCSV[uP][2];
- *pt++ = szNumeroCSV[uQ][0]; *pt++ = szNumeroCSV[uQ][1]; *pt++ = szNumeroCSV[uQ][2];
- *pt++ = szNumeroCSV[uR][0]; *pt++ = szNumeroCSV[uR][1]; *pt++ = szNumeroCSV[uR][2];
- *pt++ = szNumeroCSV[uS][0]; *pt++ = szNumeroCSV[uS][1]; *pt++ = szNumeroCSV[uS][2];
- *pt++ = szNumeroCSV[uT][0]; *pt++ = szNumeroCSV[uT][1]; *pt++ = szNumeroCSV[uT][2];
- *pt++ = szNumeroCSV[uU][0]; *pt++ = szNumeroCSV[uU][1]; *pt++ = szNumeroCSV[uU][2];
- *pt++ = szNumeroCSV[uV][0]; *pt++ = szNumeroCSV[uV][1]; *pt++ = szNumeroCSV[uV][2];
- *pt++ = szNumeroCSV[uW][0]; *pt++ = szNumeroCSV[uW][1]; *pt++ = szNumeroCSV[uW][2];
- *pt++ = szNumeroCSV[uX][0]; *pt++ = szNumeroCSV[uX][1]; *pt++ = szNumeroCSV[uX][2];
- *pt++ = szNumeroCSV[uY][0]; *pt++ = szNumeroCSV[uY][1]; *pt++ = szNumeroCSV[uY][2];
- *pt++ = szNumeroCSV[uZ][0]; *pt++ = szNumeroCSV[uZ][1]; *pt++ = szNumeroCSV[uZ][2];
- *pt++ = szNumeroCSV[uAA][0]; *pt++ = szNumeroCSV[uAA][1]; *pt++ = szNumeroCSV[uAA][2];
- *pt++ = szNumeroCSV[uBB][0]; *pt++ = szNumeroCSV[uBB][1]; *pt++ = szNumeroCSV[uBB][2];
- *pt++ = szNumeroCSV[uCC][0]; *pt++ = szNumeroCSV[uCC][1]; *pt++ = szNumeroCSV[uCC][2];
- *pt++ = szNumeroCSV[uDD][0]; *pt++ = szNumeroCSV[uDD][1]; *pt++ = szNumeroCSV[uDD][2];
- *pt++ = szNumeroCSV[uEE][0]; *pt++ = szNumeroCSV[uEE][1]; *pt++ = szNumeroCSV[uEE][2];
- *pt++ = szNumeroCSV[uFF][0]; *pt++ = szNumeroCSV[uFF][1]; *pt++ = szNumeroCSV[uFF][2];
- *pt++ = szNumeroCSV[uGG][0]; *pt++ = szNumeroCSV[uGG][1]; *pt++ = szNumeroCSV[uGG][2];
- *pt++ = szNumeroCSV[uHH][0]; *pt++ = szNumeroCSV[uHH][1]; *pt++ = szNumeroCSV[uHH][2];
- *pt++ = szNumeroCSV[uII][0]; *pt++ = szNumeroCSV[uII][1]; *pt++ = szNumeroCSV[uII][2];
- *pt++ = szNumeroCSV[uJJ][0]; *pt++ = szNumeroCSV[uJJ][1]; *pt++ = szNumeroCSV[uJJ][2];
- *pt++ = szNumeroCSV[uKK][0]; *pt++ = szNumeroCSV[uKK][1]; *pt++ = szNumeroCSV[uKK][2];
- *pt++ = szNumeroCSV[uLL][0]; *pt++ = szNumeroCSV[uLL][1]; *pt++ = szNumeroCSV[uLL][2];
- *pt++ = szNumeroCSV[uMM][0]; *pt++ = szNumeroCSV[uMM][1]; *pt++ = szNumeroCSV[uMM][2];
- *pt++ = szNumeroCSV[uNN][0]; *pt++ = szNumeroCSV[uNN][1]; *pt++ = szNumeroCSV[uNN][2];
- *pt++ = szNumeroCSV[uOO][0]; *pt++ = szNumeroCSV[uOO][1]; *pt++ = szNumeroCSV[uOO][2];
- *pt++ = szNumeroCSV[uPP][0]; *pt++ = szNumeroCSV[uPP][1]; *pt++ = szNumeroCSV[uPP][2];
- *pt++ = szNumeroCSV[uQQ][0]; *pt++ = szNumeroCSV[uQQ][1]; *pt++ = szNumeroCSV[uQQ][2];
- *pt++ = szNumeroCSV[uRR][0]; *pt++ = szNumeroCSV[uRR][1]; *pt++ = szNumeroCSV[uRR][2];
- *pt++ = szNumeroCSV[uSS][0]; *pt++ = szNumeroCSV[uSS][1]; *pt++ = szNumeroCSV[uSS][2];
- *pt++ = szNumeroCSV[uTT][0]; *pt++ = szNumeroCSV[uTT][1]; *pt++ = szNumeroCSV[uTT][2];
- *pt++ = szNumeroCSV[uUU][0]; *pt++ = szNumeroCSV[uUU][1]; *pt++ = szNumeroCSV[uUU][2];
- *pt++ = szNumeroCSV[uVV][0]; *pt++ = szNumeroCSV[uVV][1]; *pt++ = szNumeroCSV[uVV][2];
- *pt++ = szNumeroCSV[uWW][0]; *pt++ = szNumeroCSV[uWW][1]; *pt++ = szNumeroCSV[uWW][2];
- *pt++ = szNumeroCSV[uXX][0]; *pt++ = szNumeroCSV[uXX][1]; *pt++ = szNumeroCSV[uXX][2];
- *pt++ = '\0';
- iContadorLinha++;
- if(iContadorLinha == QT_PALAVRAS){
- for(iContadorLinha=0; iContadorLinha < QT_PALAVRAS; iContadorLinha++){
- printf("%s\n", szLinhas[iContadorLinha]);
- }
- iContadorLinha = 0;
- }
- printf("%i\n", iContadorLinha);
- }
- printf("Tempo inicial: %s\n", szTemp);
- time(&tempoFinal);
- strftime(szTemp, 20, "%Y-%m-%d_%H-%M-%S", localtime(&tempoFinal));
- printf("Tempo final : %s\n", szTemp);
- printf("Executado com sucesso!!!\n");
- return 0;
- }
- void Gerar_Palavras(
- const char *szCaracteres,
- size_t qt_caracteres_por_Palavra,
- )
- {
- char *szTexto = calloc()
- }
- int main()
- {
- //GerarPalavras();
- //GerarQuina5Numeros();
- //GerarDuplaSena7Numeros();
- //GerarPalavras2();
- //GerarQuina6Numeros();
- //GerarLotomania();
- //GerarKeno10Numeros();
- GerarLotomania_2();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement