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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 ... 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 [78] 79 80 81 82 83
771  Programación / Programación C/C++ / Re: ¿Uso mal las funciones de la librería GMP? en: 6 Julio 2012, 18:21 pm
Pues ni idea la verdad , igual es que mis librerias como las compile para mi ordenador no sirven para el tuyo...
772  Programación / Programación C/C++ / Re: ¿Uso mal las funciones de la librería GMP? en: 6 Julio 2012, 17:43 pm
A ver vamos a hacer una cosa , vamos a guardarla en la variable suma pero está ahora vá a ser de tipo mpz_t ahora te paso el codigo a ver que tal , pero me parece rarísimo.Toma aquí tienes , ahora lo que he hecho es que la variable suma es de tipo mpz_t
Código
  1. #include <stdio.h>
  2. #include <gmp.h>
  3.  
  4.  
  5. int main()
  6. {
  7.    mpz_t num, resultado, mod,suma; //Variables
  8.    mpz_inits(resultado,mod,suma,NULL);//Resultado suma y mod inicializado a 0;
  9.    mpz_init_set_ui(num, 2); //Inicializo num a 2
  10.    mpz_pow_ui(resultado, num, 1000); // 2^1000
  11.    gmp_printf("Resultado: %Zd\n\n", resultado); //Imprimo 2^1000, y el resultado es correcto
  12.  
  13.    while(mpz_cmp_ui(resultado, 0) > 0)
  14.    {//BUCLE NO INFINITO
  15.         mpz_add_ui(suma,suma,mpz_mod_ui(mod, resultado, 10)); //suma = suma + el resto de dividir resultado entre 10
  16.        //printf("SUMA :%d \n", suma); Probando la suma...
  17.        mpz_tdiv_q_ui(resultado,resultado, 10);//Realizamos una division entre 10 y no redondeamos, lo que sobra lo truncamos.
  18.        //mpz_set_ui(resultado, mpz_cdiv_ui(resultado, 10)); Esto está mal , la función mpz_cdiv_ui devuelve el resto de la division!!
  19.        gmp_printf("Suma: %Zd\n\n", suma); //Además de que el bucle es infinito, he comprobado que la suma la hace mal.
  20.        //getchar();
  21.  
  22.    }
  23.    gmp_printf("Suma final: %Zd\n\n", suma);
  24.    mpz_clears(resultado,num,mod,suma,NULL); //Liberamos memoria
  25.    getchar();
  26.    return 0;
  27. }
  28.  
Vamos a ver una cosa compila este código y dime lo que te sale también...
Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    printf("El tamano de un unsigned long int en tu maquina es de: %d bytes",sizeof(unsigned long int));
  6.    getchar();
  7.    return 0;
  8. }
  9.  
773  Programación / Programación C/C++ / Re: ¿Uso mal las funciones de la librería GMP? en: 6 Julio 2012, 17:39 pm
Eso me dá a mí , a ti ¿cuanto te dá? ¿Que página es?
774  Programación / Programación C/C++ / Re: ¿Uso mal las funciones de la librería GMP? en: 6 Julio 2012, 17:31 pm
Pues es que unsigned long int , es de 4 bytes de longitud 4*8= 32 bits , o sea que solo puede contener hasta 232=4,294,967,295 , pero eso no tiene nada que ver porque esas cifras no suman tal cantidad de numeros, así que no sé , cuanto debe de dar la suma entonces?
775  Programación / Programación C/C++ / Re: [TUTORIAL]Como compilar la librería GMP y configurarla en codeblocks en Windows. en: 6 Julio 2012, 17:23 pm
Es un placer ayudar , pues sí , me servirá hasta a mi porque cuando pusiste eso en el tema que creaste , no me acordaba de como compilarla , sin embargo aquí tengo un documento por si no me acuerdo.
¡Saludos!
776  Programación / Programación C/C++ / Re: ¿Uso mal las funciones de la librería GMP? en: 6 Julio 2012, 17:13 pm
Pues mira te explico lo que tenías mal:
  • Primero de todo la función mpz_set_ui(num,2); no inicializaba resultado , era mpz_init_set_ui(num,2)
  • Segundo la función mpz_cdiv_ui(resultado, 10); no retornaba el número dividido si no el resto de la división
  • Tercero el especificador de conversion para un tipo unsigned long int es %lu
Y creo que no se me olvida más nada , mmm ah si el codigo ! ¿Que valor daba la suma?
Código
  1. #include <stdio.h>
  2. #include <gmp.h>
  3.  
  4. unsigned long int suma=0, i=0;
  5. //Lo pongo como variable global porque si lo meto en main() me dice "Suma dígitos.exe dejó de funcionar. Windows está buscando una solución"
  6.  
  7. int main()
  8. {
  9.  
  10.    mpz_t num, resultado, mod; //Variables
  11.    mpz_inits(resultado,mod,NULL);//Resultado y mod inicializado a 0;
  12.    mpz_init_set_ui(num, 2); //Inicializo num a 2
  13.    mpz_pow_ui(resultado, num, 1000); // 2^1000
  14.    gmp_printf("Resultado: %Zd\n\n", resultado); //Imprimo 2^1000, y el resultado es correcto
  15.  
  16.    while(mpz_cmp_ui(resultado, 0) > 0)
  17.    {//BUCLE NO INFINITO
  18.        suma += mpz_mod_ui(mod, resultado, 10); //suma = suma + el resto de dividir resultado entre 10
  19.        //printf("SUMA :%d \n", suma); Probando la suma...
  20.        mpz_tdiv_q_ui(resultado,resultado, 10);//Realizamos una division entre 10 y no redondeamos, lo que sobra lo truncamos.
  21.        //mpz_set_ui(resultado, mpz_cdiv_ui(resultado, 10)); Esto está mal , la función mpz_cdiv_ui devuelve el resto de la division!!
  22.        gmp_printf("Resultado dividiendo: %Zd\n\n", resultado);
  23.        printf("%lu\n", suma); //Además de que el bucle es infinito, he comprobado que la suma la hace mal.
  24.  
  25.    }
  26.    printf("Suma: %lu\n", suma);
  27.    mpz_clears(resultado,num,mod,NULL); //Liberamos memoria
  28.    getchar();
  29.    return 0;
  30. }
  31.  
¡Un saludo!
777  Programación / Programación C/C++ / Re: ¿Uso mal las funciones de la librería GMP? en: 6 Julio 2012, 16:59 pm
Ya está listo dame un momento y te publico lo que está mal...
778  Programación / Programación C/C++ / Re: ¿Uso mal las funciones de la librería GMP? en: 6 Julio 2012, 16:50 pm
Estoy mirando el código y ten mucho cuidado con las funciones que utilizas , mira la función esta lo que retorna:
Código:
mpz_cdiv_ui(resultado, 10)
No retorna el número dividido , sino el resto de la división...
779  Programación / Programación C/C++ / Re: ¿Uso mal las funciones de la librería GMP? en: 6 Julio 2012, 16:42 pm
Ya he visto que no me funciona ...Voy a ver si te lo hago desde 0 , entonces recapitulamos , tenemos que sumar todos los dígitos de 21000¿no?
780  Programación / Programación C/C++ / Re: ¿Uso mal las funciones de la librería GMP? en: 6 Julio 2012, 16:33 pm
Ah si perdona es que no había visto las funciones de inicialización y asignación combinadas en la documentación , de todas maneras es así :
Código
  1. mpz_init_set_ui (num, 2);
En cuanto al bucle que condición es la que quieres poner, que resultado sea igual a 0?
entonces sería así while(mpz_cmp_ui(resultado,0)!=0)
Páginas: 1 ... 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 [78] 79 80 81 82 83
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines