elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda - Generador de diccionarios
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda - Generador de diccionarios  (Leído 3,311 veces)
Miky Gonzalez

Desconectado Desconectado

Mensajes: 87

http://mikygonzalez.comule.com/blog/


Ver Perfil WWW
Ayuda - Generador de diccionarios
« en: 30 Junio 2012, 15:53 pm »

Estoy haciendo un codigo que llevaba bien hasta que me estanque en esto:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. void uso(char *);
  5. int main(int argc, char **argv) {
  6. unsigned short int tmp[5] = {0, 0, 0, 0, 0};
  7. char caracteres[39] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
  8. 't', 'u', 'v', 'w', 'x', 'y', 'z'};
  9. if (argc > 4 || argc < 3) uso(argv[0]);
  10. if (argv[1] == NULL) { printf("ERR ARG:1: Se debe especificar nombre de archivo\n"); uso(argv[0]); }
  11. if (atoi(argv[2]) == 0) { printf("ERR ARG:2: Debe especificarse un numero (longitud de cadena)\n"); uso(argv[0]); }
  12. FILE *file;
  13.    file = fopen(argv[1], "w");
  14.    if (file == NULL) { printf("ERR ARG:1: Ocurrio un problema al abrir/crear el archivo\n"); uso(argv[0]); }
  15.    // GENERADOR DEL DICCIONARIO
  16. for (tmp[0] = 1; tmp[0] <= atoi(argv[2]); tmp[0]++) {
  17. for (tmp[4] = tmp[0]; tmp[4] >= 0; tmp[4]--) {
  18. for (tmp[1] = strlen(caracteres); tmp[1] >= 1; tmp[1]--) {
  19. printf("%c", caracteres[tmp[1]-1]);
  20. if (tmp[0] == 1) printf("\n");
  21. fputc(caracteres[tmp[1]-1], file);
  22. if (tmp[0] == 1) fputc('\n', file);
  23. }
  24. for (tmp[2] = tmp[4]; tmp[2] > 1; tmp[2]--) {
  25. for (tmp[1] = strlen(caracteres); tmp[1] >= 1; tmp[1]--) {
  26. printf("%c", caracteres[tmp[1]-1]);
  27. fputc(caracteres[tmp[1]-1], file);
  28. } printf("\n");
  29. }
  30. }
  31. }
  32.    fclose(file);
  33.    return 0;
  34. }
  35. void uso(char *name) {
  36. printf("Uso: %s archivo longitud [caracteres]\n", name); exit(0);
  37. }
  38.  

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

Desconectado Desconectado

Mensajes: 189



Ver Perfil WWW
Re: Ayuda - Generador de diccionarios
« Respuesta #1 en: 1 Julio 2012, 01:15 am »

Escribe que es lo que quieres hacer?¿ No lo entiendo.


En línea

Miky Gonzalez

Desconectado Desconectado

Mensajes: 87

http://mikygonzalez.comule.com/blog/


Ver Perfil WWW
Re: Ayuda - Generador de diccionarios
« Respuesta #2 en: 1 Julio 2012, 11:27 am »

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

Desconectado Desconectado

Mensajes: 189



Ver Perfil WWW
Re: Ayuda - Generador de diccionarios
« Respuesta #3 en: 1 Julio 2012, 16:37 pm »

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.
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main() {
  5.  
  6. char caracteres[3] = {'a', 'b', 'c'};
  7.  
  8.    // FILE *file;
  9.    //file = fopen("d.txt", "w");
  10.  
  11.    for(int i=0;i<3;i++)
  12.    {
  13.      printf("%c\n", caracteres[i]);
  14.         for(int j=0;j<3;j++)
  15.         {
  16.            printf("%c", caracteres[j]);
  17.            printf("%c\n", caracteres[i]);    
  18.         }
  19.     }
  20.    //fclose(file);
  21.    scanf("%d");
  22.    return 0;
  23. }
« Última modificación: 1 Julio 2012, 16:42 pm por SXF » En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Ayuda - Generador de diccionarios
« Respuesta #4 en: 1 Julio 2012, 17:06 pm »

¡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:

Código:
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!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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,924 Último mensaje 13 Septiembre 2012, 18:36 pm
por .oZONo.
Generador de Diccionarios del Wifislax de 64 Bits - Dudas
Hacking Wireless
Miguell64x 0 2,823 Último mensaje 6 Agosto 2012, 06:39 am
por Miguell64x
Generador de Diccionarios BS-Crunch
Hacking Wireless
nicosilver 0 4,013 Último mensaje 25 Diciembre 2012, 03:44 am
por nicosilver
Generador Diccionarios a medida
Seguridad
Hirochi3D 0 2,155 Último mensaje 21 Enero 2014, 11:08 am
por Hirochi3D
generador de diccionarios en c++, ejecutable en linux.
Hacking Wireless
rochesto 0 3,032 Último mensaje 16 Abril 2016, 18:26 pm
por rochesto
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines