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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ... 49
171  Programación / Programación C/C++ / Re: como hacer un generador?? en: 13 Julio 2012, 13:44 pm
Sí... Demasiada memoria ocupa...

Ahora me pongo a ver qué puedo hacer para mejorarlo, pero creo que no hay mucho que hacer salvo reducir el código..., porque las combinaciones, queramos o no, van a ser 11881125718624, y como dice daniyo eso serían 11881125718624 bytes... Bueno, ya veré sobre la marcha qué hago  :xD

Saludos!
172  Programación / Programación C/C++ / Re: como hacer un generador?? en: 13 Julio 2012, 13:12 pm
Citar
jajaj seeee 7777 es algo minusculo realmente.


Código:
printf("%s%.5d\n",Letras, i);

lo deje a

Código:
printf("%s\n",Letras);

para no imprimir esos numeros, pues no entiendo porque lo dejaste, alguna info sobre el porque debe hacerse seria de gran ayuda.
Je en esta tarde me dedique a dormir por el cansancio que tenia, y hasta hace poco tengo que mirar otras cosas, pero me voy a dedicar a hacer este problema, como dices, es algo divertido mirar como podria dejar mejor el funcionamiento, si la recursividad es algo, ummm como decirlo, jodido, pero vale la pena entenderlo.

El %.5d debe ponerse porque en esta versión del código para mejorar la eficiencia hice que los números fueran separados de las letras.

Citar
una pregunta asi por curiosidad... cuanto os dura el programa ejecutandose y cuanto os ocupa el archivo generado?

lo pregunto porque yo para hacer esta combinacion mas corta "AAAA000 hasta ZZZZ9999" llevaba unos 20 minutos o mas y 35GB de archivo cuando le he dado a cancelar. no se si me he liado haciendo el programa o que...

gracias!

El tiempo exacto no lo sé, pero sí que tarda muchísimo en finalizar y ocupa también mucho... ¿Será malo para el ordenador?  :-[

Gracias por el código, BlackZeroX (Astaroth). Ahora los miro!

Saludos!

EDITO: Finalmente son 1 188 125 718 624 combinaciones posibles!
173  Programación / Programación C/C++ / Re: Alguna ayuda :D seria agradable ... ( C) en: 12 Julio 2012, 23:12 pm
Aquí te dejo ejemplos y explicación de cómo usarlos y para qué sirven: fread(), fwrite()

Saludos!
174  Programación / Programación C/C++ / Re: Alguna ayuda :D seria agradable ... ( C) en: 12 Julio 2012, 20:16 pm
Muchas gracias y perdon la demora.. me cope con el programa y va saliendo joya!! :D gracias !!!

ahora tengo otra pregunta.. va me voy a poner a leer pero para saber mas o menos si yo quiero leer un archivo... que ese archivo tiene una estructura... que necesito mantener.. con que funcion me recomiendan para leerlo? fscanf ? o alguna de esa no? ahora me voy aponer a buscar cual se adapta mejor
abrazo

Sí, con fscanf te irá bien.

Saludos.
175  Programación / Programación C/C++ / Re: como hacer un generador?? en: 12 Julio 2012, 19:03 pm
Ese es el problema de usar tanta recursividad  el programa hace demasiado llamadas en foma de arbol, si se hiciera iterativo en ves de recursivo....

¿7777 combinaciones? Son demasiado pocas. A mí me hace todas (comprobado desde el fichero que genera) y son muchísimas más...

Edito:

Hay 2,75854735 × 1015 combinaciones, creo.

Saludos!
176  Programación / Programación C/C++ / Re: recursividad C en: 12 Julio 2012, 18:54 pm
Dividiendo entre 10 un número entero y sumándole uno al contador hasta que el resultado sea 0 es como puedes contar el número de cifras (ya que en un int solo te coge la parte entera, y por tanto llegará a ser 0).

dato000, tu código tiene algunos errores... Para pedir datos debes usar scanf, no printf, y en:

Código
  1. resultado = (numero % 10) * 10^2;

Donde tienes puesto el 2, es una variable que empieza en el número de cifras y se va restando uno... Lo entenderás mejor cuando deje el código:

Código
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. int num_dividir(int n)
  5. {
  6.    int i=0;
  7.    while(n > 0)
  8.    {
  9.        n /= 10;
  10.        i++;
  11.    }
  12.    return i;
  13. }
  14.  
  15. int funcionRecursiva (int n, int cifras, int resultado)
  16. {
  17.    if(cifras <= 0) return resultado/10;
  18.    else
  19.    {
  20.        resultado += (n % 10) * pow(10,cifras);
  21.        n /= 10;
  22.        cifras--;
  23.        return funcionRecursiva(n, cifras, resultado);
  24.    }
  25. }
  26.  
  27.  
  28.  
  29. int main ()
  30.  
  31. {
  32.    int f, funcion, div, resultado;
  33.    printf ("Ingrese el numero\n");
  34.    scanf ("%d", &f);
  35.    div = num_dividir(f); //Numero de cifras
  36.    resultado = funcionRecursiva(f, div, 0);
  37.    printf("El numero invertido es: %d", resultado);
  38.  
  39.   return 0;
  40. }
  41.  

No lo he probado, pero creo que funciona bien.

Saludos!
177  Programación / Programación C/C++ / Re: como hacer un generador?? en: 12 Julio 2012, 18:47 pm
Sí, imprime en el archivo.

File *fp es un puntero porque el programa necesita un puntero a un archivo para leer de este mismo o escribir en él.

¿Eso te imprime? A mí me imprime:

AAAAA00000
AAAAA00001
...
ZZZZZ99999

Y mientras el programa está en ejecución, llega al 100% de la CPU (y eso que tengo 6GB de RAM...), y sin embargo, ahora que estoy usando bastantes programas a la vez, estoy usando un 9%...

A ver si conseguimos hacer más eficiente el programa! Es un reto bastante divertido  :D
178  Programación / Programación C/C++ / Re: como hacer un generador?? en: 12 Julio 2012, 17:24 pm
Pongo printf y fprintf porque fprintf no imprime en consola, y es bueno ir viendo por dónde va.

El archivo se crea en la misma carpeta donde ejecutas el .exe, y no se borra (a no ser que lo hagas tú manualmente).

Al nombre de la variable le he puesto fp, pero puedes ponerle cualquier otro nombre. A mí se me ocurre cómo poder simplificar un poco el código, pero para ello necesitaré poner en una función muchos condicionales. Lo intentaré, a ver qué pasa...

Saludos!

179  Programación / Programación C/C++ / Re: de hexadecimal a decimal en: 12 Julio 2012, 12:24 pm
¿Qué has intentado? Sino no te podemos ayudar, ya que no sabemos la parte en la que tienes dudas...

Saludos.
180  Programación / Programación C/C++ / Re: Como copiar una cadena a otra crarcter por caracter en: 12 Julio 2012, 08:21 am
En el bucle for esta condición sobra:

Código
  1. if(A!='\0')

ya que indicas que recorres la cadena hasta MAX-1, y el '\0' está en MAX. (A parte de que para recorrer una cadena debes poner el subíndice (el [])...)

Las cadenas no se pueden copiar usando el operador de asignación (y mucho menos el de comparación, que es el que has usado).

Normalmente las cadenas se copian con strcpy(), pero como el ejercicio pide que no uses esa función, pues con el bucle for. Así, vas recorriendo cada carácter de la cadena: cadena[0], cadena[1] ... cadena[MAX-1]; y asignando el carácter a la otra cadena. Así:

Código
  1. for(i=0;i<MAX;i++)
  2. {
  3.   B[i] = A[i];
  4. }
  5. B[MAX] = '\0';
  6.  
  7.  

Saludos!
Páginas: 1 ... 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ... 49
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines