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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Uso mal las funciones de la librería GMP?
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: ¿Uso mal las funciones de la librería GMP?  (Leído 14,122 veces)
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: ¿Uso mal las funciones de la librería GMP?
« Respuesta #10 en: 6 Julio 2012, 17:24 pm »

¡Muchas gracias! Creía que era esa función la de dividir...

La suma no da... Así que he puesto esto:

 
Código
  1. while(mpz_cmp_ui(resultado, 0) >0)
  2.    {//BUCLE INFINITO
  3.        suma += mpz_mod_ui(mod, resultado, 10); //suma = suma + el resto de dividir resultado entre 10
  4.        mpz_tdiv_q_ui(resultado, resultado, 10); //Dividimos resultado entre 10
  5.        printf("%d\n", suma); //Además de que el bucle es infinito, he comprobado que la suma la hace mal.
  6.        getchar();
  7.  
  8.    }

Para ver qué pasaba, y los primeros números los suma bien, pero a partir de 565 sale un número muy grande, números negativos, etc. (no sé por qué salen negativos, cuando "suma" es unsigned long int...)...


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: ¿Uso mal las funciones de la librería GMP?
« Respuesta #11 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?


En línea

Regístrate en
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: ¿Uso mal las funciones de la librería GMP?
« Respuesta #12 en: 6 Julio 2012, 17:32 pm »

El problema es de una página muy conocida de retos de programación, por lo que buscando en Internet acabo de ver que da 1366. No sé si será el resultado correcto...
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: ¿Uso mal las funciones de la librería GMP?
« Respuesta #13 en: 6 Julio 2012, 17:39 pm »

Eso me dá a mí , a ti ¿cuanto te dá? ¿Que página es?
En línea

Regístrate en
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: ¿Uso mal las funciones de la librería GMP?
« Respuesta #14 en: 6 Julio 2012, 17:42 pm »

Qué raro... A mí me da 1620828886. La página es Project Euler.
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: ¿Uso mal las funciones de la librería GMP?
« Respuesta #15 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.  
« Última modificación: 6 Julio 2012, 17:53 pm por avesudra » En línea

Regístrate en
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: ¿Uso mal las funciones de la librería GMP?
« Respuesta #16 en: 6 Julio 2012, 17:51 pm »

Tanto en tu código como en uno que he hecho yo (que ha resultado ser igual que el tuyo), me da 43123298370...  :(
En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: ¿Uso mal las funciones de la librería GMP?
« Respuesta #17 en: 6 Julio 2012, 17:59 pm »

Me sale 4 bytes.
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: ¿Uso mal las funciones de la librería GMP?
« Respuesta #18 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...
En línea

Regístrate en
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: ¿Uso mal las funciones de la librería GMP?
« Respuesta #19 en: 6 Julio 2012, 18:23 pm »

Yo creo que sí sirven, porque sino me daría error al compilar, o me daría mal 21000... Veré que puedo hacer.

Gracias por haberme ayudado!

Saludos.
En línea

Páginas: 1 [2] 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Librería de funciones y scripts BATCH Actualizado 26/05/07 « 1 2 »
Scripting
ne0x 13 65,824 Último mensaje 6 Julio 2011, 02:10 am
por bITEBUG
Ayuda con funcion de libreria de funciones u.u
Scripting
FranciskoAsdf 0 2,406 Último mensaje 9 Septiembre 2008, 04:15 am
por FranciskoAsdf
Python, funciones o libreria ?
Scripting
EvilGoblin 2 6,614 Último mensaje 11 Julio 2010, 20:35 pm
por xーいぱ
¿Que funciones puedo agregar a mi libreria?
Programación C/C++
megaerikivan 2 2,151 Último mensaje 17 Abril 2016, 20:35 pm
por HardForo
Optimizar código, crear libreria de funciones.
PHP
raguel 3 3,029 Último mensaje 3 Agosto 2016, 03:04 am
por Dacan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines