Autor
|
Tema: Ayuda - Generador de diccionarios (Leído 3,321 veces)
|
Miky Gonzalez
Desconectado
Mensajes: 87
http://mikygonzalez.comule.com/blog/
|
Estoy haciendo un codigo que llevaba bien hasta que me estanque en esto: #include <stdio.h> #include <stdlib.h> #include <string.h> void uso(char *); int main(int argc, char **argv) { unsigned short int tmp[5] = {0, 0, 0, 0, 0}; char caracteres[39] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; if (argc > 4 || argc < 3) uso(argv[0]); if (argv [1] == NULL ) { printf("ERR ARG:1: Se debe especificar nombre de archivo\n"); uso (argv [0]); } if (atoi(argv [2]) == 0) { printf("ERR ARG:2: Debe especificarse un numero (longitud de cadena)\n"); uso (argv [0]); } FILE *file; file = fopen(argv [1], "w"); if (file == NULL ) { printf("ERR ARG:1: Ocurrio un problema al abrir/crear el archivo\n"); uso (argv [0]); } // GENERADOR DEL DICCIONARIO for (tmp [0] = 1; tmp [0] <= atoi(argv [2]); tmp [0]++) { for (tmp[4] = tmp[0]; tmp[4] >= 0; tmp[4]--) { for (tmp [1] = strlen(caracteres ); tmp [1] >= 1; tmp [1]--) { printf("%c", caracteres [tmp [1]-1]); if (tmp [0] == 1) printf("\n"); fputc(caracteres [tmp [1]-1], file ); if (tmp [0] == 1) fputc('\n', file ); } for (tmp[2] = tmp[4]; tmp[2] > 1; tmp[2]--) { for (tmp [1] = strlen(caracteres ); tmp [1] >= 1; tmp [1]--) { printf("%c", caracteres [tmp [1]-1]); fputc(caracteres [tmp [1]-1], file ); } } } return 0; } void uso(char *name) { printf("Uso: %s archivo longitud [caracteres]\n", name ); exit(0); }
En la sección generador del diccionario solo hace bien la primera parte, me he liado mucho porque llevo como 40 minutos y no logro una solucion lo que quiero que haga: z .. a zz .. aa .. zzz .. aaa Todas las combinaciones posibles dadas desde los parametros. El codigo creo que todo esta bien menos el algoritmo de generacion del diccionario. ¿Alguna solucion?. Gracias por leer.
|
|
|
En línea
|
Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica: EN CONSTRUCCIÓN
|
|
|
SXF
|
Escribe que es lo que quieres hacer?¿ No lo entiendo.
|
|
|
En línea
|
|
|
|
Miky Gonzalez
Desconectado
Mensajes: 87
http://mikygonzalez.comule.com/blog/
|
Un generador de todas la posibles combinaciones dadas desde los parametros (de momento no) de las letras que estan en la variable caracteres (a..z) Ejemplo (suponiendo que son la a, b, c): a aa ba ca b ab bb cb c ac bc cc
Y asi hasta el numero de longitud definido (siempre empieza de 1: a, b, c): Entonces si defino el numero de longitud a 3 acabaria en ccc: a .... ccc
|
|
|
En línea
|
Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica: EN CONSTRUCCIÓN
|
|
|
SXF
|
Te estas compilcando mucho la vida , mira es una combinacion con repeticion , primero plantea el problema y luego intenta resolverlo, creo que este algoritmo te servira. Lo he hecho para que resuelva las combinaciones de letras que me pusiste en el ejemplo osea a,b,c. #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char caracteres[3] = {'a', 'b', 'c'}; // FILE *file; //file = fopen("d.txt", "w"); for(int i=0;i<3;i++) { printf("%c\n", caracteres [i ]); for(int j=0;j<3;j++) { printf("%c\n", caracteres [i ]); } } //fclose(file); return 0; }
|
|
« Última modificación: 1 Julio 2012, 16:42 pm por SXF »
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡Buenas! Si en principio no sabes cuantos elementos van a tener las variaciones, deberias de utilizar una funcion recursiva. El algorimo es muy sencillo si solo quieres mostrar los datos por pantalla o darles salida a un fichero. Si quieres almacenar los datos para utilizarlos posteriormente, tendras que usar listas de vectores dinamicos (un poco mas de codigo, pero no demasiado complicado). En el primero de los casos el algoritmo seria: procedimiento variaciones_rep (lista conjunto, entero n_elementos_conjunto, entero n_elementos_variacion)
si n_elementos_variacion = 0 retornar
para i desde 1 hasta n_elementos_conjunto
mostrar conjunto[i] variaciones_rep(conjunto, n_elementos_conjunto, n_elementos_variacion - 1)
fin para
nueva_linea
fin variaciones
¡Saludos!
|
|
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[APORTE] Generador de Diccionarios VB.NET
« 1 2 »
.NET (C#, VB.NET, ASP)
|
kub0x
|
15
|
16,982
|
13 Septiembre 2012, 18:36 pm
por .oZONo.
|
|
|
Generador de Diccionarios del Wifislax de 64 Bits - Dudas
Hacking Wireless
|
Miguell64x
|
0
|
2,832
|
6 Agosto 2012, 06:39 am
por Miguell64x
|
|
|
Generador de Diccionarios BS-Crunch
Hacking Wireless
|
nicosilver
|
0
|
4,022
|
25 Diciembre 2012, 03:44 am
por nicosilver
|
|
|
Generador Diccionarios a medida
Seguridad
|
Hirochi3D
|
0
|
2,164
|
21 Enero 2014, 11:08 am
por Hirochi3D
|
|
|
generador de diccionarios en c++, ejecutable en linux.
Hacking Wireless
|
rochesto
|
0
|
3,040
|
16 Abril 2016, 18:26 pm
por rochesto
|
|