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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  como hacer un generador??
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 2 3 [4] 5 6 Ir Abajo Respuesta Imprimir
Autor Tema: como hacer un generador??  (Leído 24,816 veces)
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: como hacer un generador??
« Respuesta #30 en: 13 Julio 2012, 14:47 pm »

jejej había compilado el otro còdigo ... con razón ya me parecía extraño...

Si compilaste el primer código que puse yo deberían haberte salido 11 881 376 combinaciones... Qué raro...



« Última modificación: 13 Julio 2012, 14:59 pm por DickGumshoe » En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: como hacer un generador??
« Respuesta #31 en: 13 Julio 2012, 15:03 pm »

.
La cantidad de combinaciones desde A-Z (sin contar la Ñ) en una cadena de 10 segun este algoritmo es de (26 ^ 10) = 141167095653376 combinaciones posibles desde AAAAAAAAAA hasta ZZZZZZZZZZ.

Dulces Lunas!¡.


« Última modificación: 13 Julio 2012, 15:05 pm por BlackZeroX (Astaroth) » En línea

The Dark Shadow is my passion.
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: como hacer un generador??
« Respuesta #32 en: 13 Julio 2012, 15:08 pm »

La cantidad de combinaciones desde A-Z en una cadena de 10 es  ¨(26 ^ 10) = 141167095653376

Dulces Lunas!¡.

Pero en el código que va de la A a la Z es de cinco caracteres por combinación, y por lo tanto es de 265= 11881376 combinaciones posibles.

Por cierto, a espera de que alguien conteste si es posible hacer el programa para ejecutarlo en un ordenador "normal", dejo la última versión que he hecho. En esta reduzco la extensión del código, le quito la mayor parte de las funciones recursivas y mejoro la eficiencia:

Código
  1. #include <stdio.h>
  2.  
  3. FILE *fp;
  4.  
  5. void numeros(char *Letras, int n)
  6. {
  7. int i;
  8. for(i=0;i<100000;i++)
  9. {
  10.     printf("%s%.5d\n",Letras, i);
  11.     fprintf(fp, "%s%.5d\n", Letras, i);
  12. }
  13. }
  14.  
  15. void Generador(char *Letras, int n)
  16. {
  17.    int count, resta=1, llamada;
  18.    while(llamada != 5)
  19.    {
  20.        numeros(Letras, n);
  21.        count = n;
  22.        Letras[n]++;
  23.        llamada = 0;
  24.        while(count >= 0)
  25.        {
  26.            if(Letras[count] > 90)
  27.            {
  28.                Letras[count] = 65;
  29.                Letras[n-resta]++;
  30.                llamada++;
  31.            }
  32.            count--;
  33.            resta++;
  34.        }
  35.    }
  36. }
  37. int main()
  38. {
  39.    char Letras[] = "AAAAA";
  40.    fp = fopen("combinacion.txt", "w");
  41.    Generador(Letras, 4);
  42.    fclose(fp);
  43.    return 0;
  44. }
  45.  

Saludos!
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: como hacer un generador??
« Respuesta #33 en: 13 Julio 2012, 15:19 pm »

Queda claro que la cantidad esta dada por 26^N y debido a esto le hice una modificación a mi código...

http://foro.elhacker.net/programacion_cc/como_hacer_un_generador-t366597.0.html;msg1765220#msg1765220

Código
  1.  
  2. #include <iostream>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. inline string &addWord(string &text) {
  7.    string::reverse_iterator it = text.rbegin();
  8.    for (; it != text.rend(); it++) {
  9.        ++(*it);
  10.        if (tolower(*it) >= 'a' && tolower(*it) <= 'z') break;
  11.        (*it) = (islower(*it))? 'a': 'A';
  12.    }
  13.    return text;
  14. }
  15.  
  16. size_t addAllWord(string text, void (*callback)(string&, bool&) = NULL) {
  17.    bool cancel = false;
  18.    register size_t i = 0, lim = pow(26, text.size());
  19.    if (!callback) return lim;
  20.    for (;(i < lim) && (cancel ==false); i++) {
  21.        callback(addWord(text), cancel);
  22.    }
  23.    return i;
  24. }
  25.  
  26. void showWords(string& text, bool& cancel) {
  27.    cout << text << endl;
  28. }
  29.  
  30. int main() {
  31.    string text = "ZZZx";
  32.    cout << addAllWord(text, showWords) << endl;
  33.    cin.get();
  34.    return 0;
  35. }
  36.  
  37.  
« Última modificación: 13 Julio 2012, 15:28 pm por BlackZeroX (Astaroth) » En línea

The Dark Shadow is my passion.
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: como hacer un generador??
« Respuesta #34 en: 13 Julio 2012, 15:22 pm »

DickGumshoe, yo supongo que si se puede ejecutar en un ordenador "normal", sin salida por consola y sin almacenar el resultado en un archivo de texto claro >:D No en serio, quiza se pueda hacer con combinaciones de 4 o 5, a lo sumo 6 caracteres.

Saludos.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: como hacer un generador??
« Respuesta #35 en: 13 Julio 2012, 15:23 pm »

siempre se queda muuuuy lento cuando va como en "FMMMM" ummm supongo que un core 2 duo tambien demora bastante para esta tarea  :xD :xD

el codigo en visual es nuevo para mi, porque apenas si se algo de basic, y absolutamente nada de .NET o C#.

Citar
La cantidad de combinaciones desde A-Z en una cadena de 10 es  ¨(26 ^ 10) = 141167095653376

ouch ouch ouch, es en serio?????? ouch ouch ouch.

DickGumshoe, yo supongo que si se puede ejecutar en un ordenador "normal", sin salida por consola y sin almacenar el resultado en un archivo de texto claro >:D No en serio, quiza se pueda hacer con combinaciones de 4 o 5, a lo sumo 6 caracteres.

Saludos.

pues eso hice, lo deje en 5 caracteres, y de 'A' hasta 'F' funciona sin problemas. me podrian explicar como hicieron el calculo de permutaciones?? el clasico nCr???
En línea


DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: como hacer un generador??
« Respuesta #36 en: 13 Julio 2012, 15:32 pm »

Daniyo, como bien dices, uno de 5 caracteres sí es posible ejecutarlo en un ordenador "normal", ya que el primer código que puse en este tema era de combinaciones desde AAAAA hasta ZZZZZ, y funcionaba perfectamente.

jaime.urizar (el autor del tema): Por lo que parece generar todas las combinaciones posibles desde AAAAA00000 hasta ZZZZZ99999 (sin mezclar letras y números) es imposible en un ordenador "normal". Pero eso no quiere decir que no tengamos bien el código, que era la finalidad del tema, y entonces supongo que nos quedaremos con el último, que es el más corto y eficiente:

Código
  1. #include <stdio.h>
  2.  
  3. FILE *fp;
  4.  
  5. void numeros(char *Letras, int n)
  6. {
  7. int i;
  8. for(i=0;i<100000;i++)
  9. {
  10.     printf("%s%.5d\n",Letras, i);
  11.     fprintf(fp, "%s%.5d\n", Letras, i);
  12. }
  13. }
  14.  
  15. void Generador(char *Letras, int n)
  16. {
  17.    int count, resta=1, llamada;
  18.    while(llamada != 5)
  19.    {
  20.        numeros(Letras, n);
  21.        count = n;
  22.        Letras[n]++;
  23.        llamada = 0;
  24.        while(count >= 0)
  25.        {
  26.            if(Letras[count] > 90)
  27.            {
  28.                Letras[count] = 65;
  29.                Letras[n-resta]++;
  30.                llamada++;
  31.            }
  32.            count--;
  33.            resta++;
  34.        }
  35.    }
  36. }
  37. int main()
  38. {
  39.    char Letras[] = "AAAAA";
  40.    fp = fopen("combinacion.txt", "w");
  41.    Generador(Letras, 4);
  42.    fclose(fp);
  43.    return 0;
  44. }
  45.  

Saludos!

EDITO:

Dato000, no había visto tu mensaje. Te explico:

Para todas las combinaciones posibles entre de 5 caracteres usando las letras del abecedario sin contar la 'Ñ', lo calculamos haciendo 265=11881376 combinaciones posibles.

Así, como para cada combinación de letras la repetimos 99999 veces (en el código que va desde AAAAA00000 hasta ZZZZZ99999), multiplicamos las combinaciones posibles desde AAAAA hasta ZZZZZ por 99999 (11881376 * 99999 = 1188125718624 combinaciones en total).

Saludos!
« Última modificación: 13 Julio 2012, 15:38 pm por DickGumshoe » En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: como hacer un generador??
« Respuesta #37 en: 13 Julio 2012, 15:39 pm »


jaime.urizar (el autor del tema): Por lo que parece generar todas las combinaciones posibles desde AAAAA00000 hasta ZZZZZ99999 (sin mezclar letras y números) es imposible en un ordenador "normal". Pero eso no quiere decir que no tengamos bien el código, que era la finalidad del tema, y entonces supongo que nos quedaremos con el último, que es el más corto y eficiente:


* No digas imposible por que si se puede.
* Tu código Tiene Bastantes errores... revisa-lo con el mio y veras la diferencia... (cuando llega a por ejemplo AAAAZ se devuelve a AAAAA)...
http://foro.elhacker.net/programacion_cc/como_hacer_un_generador-t366597.0.html;msg1765302#msg1765302
* En el tema de los núcleos se tendría que separar La cadena en N donde N es la cantidad de núcleos, a su vez crear N hilos... esto es un poco mas tedioso por mi parte lo dejo asi.

Bueno mi código ya funciona al 100%

Dulces Lunas!¡.
« Última modificación: 13 Julio 2012, 15:41 pm por BlackZeroX (Astaroth) » En línea

The Dark Shadow is my passion.
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: como hacer un generador??
« Respuesta #38 en: 13 Julio 2012, 15:41 pm »

Pero el tuyo no va de AAAAA00000 hasta ZZZZZ99999, ¿no?

Digo que es imposible porque al final hemos quedado en que se necesitaban 108,058208922 TB, ¿no?

EDITO: ¿Qué error tiene el mío? Hasta donde he probado funciona perfectamente...
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: como hacer un generador??
« Respuesta #39 en: 13 Julio 2012, 15:44 pm »

La problemática de almacenamiento es despreciable... lee bien lo que se quiere.

hola amigos

les pido ayuda con algo que vi desde hace mucho, es como realizar un generador que muestre como resultado:

AAAAA
AAAAB
AAAAC
.........
.........
ZZZZZ

y algo mucho mas desafiante que no pude ni encontrar partes en internet y bueno mi conocimiento no es tan amplio pero decearia aprender a poder generar un..


AAAAA00000
AAAAA00001
AAAAA00002
....
....
....
AAAAB00000
AAAAB00001
....
.....
ZZZZZ99999

solo pude sacar cuantos resultados tendre :-( (son 14348907000000 posibles combinaciones)


una ayudita porfavor enserio me mata la curiosidad de aprender a hacer un contador o generador de ese tipo, y gracias de antemano por todo

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
Páginas: 1 2 3 [4] 5 6 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
hacer un generador de id con muestras
Ingeniería Inversa
robertofd1995 4 5,132 Último mensaje 31 Octubre 2013, 15:13 pm
por robertofd1995
Como conseguir un generador de digito de control
Ingeniería Inversa
wiredbob 3 3,130 Último mensaje 22 Julio 2014, 12:02 pm
por wiredbob
***Como hacer un generador de licencias en python « 1 2 »
Scripting
Arn_dj 10 10,285 Último mensaje 22 Diciembre 2014, 16:19 pm
por Arn_dj
MOVIDO: ***Como hacer un generador de licencias en python
Programación General
Eleкtro 0 1,982 Último mensaje 8 Diciembre 2014, 23:17 pm
por Eleкtro
como hacer un vbs generador de batch
Scripting
destructor000 4 9,099 Último mensaje 15 Septiembre 2024, 14:22 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines