Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: alexis33de en 31 Mayo 2011, 05:17 am



Título: Ayuda fraccionario-binario
Publicado por: alexis33de en 31 Mayo 2011, 05:17 am
Hola veran estaba tratando de transformar los numeros fraccionarios como: "0.125" a la base binaria, he implementado un algoritmo que saca la parte fracionaria pero no logro hacer que transforme , si alguien me podria decir que es lo que estoy haciendo mal se lo agradeceria, saludos
Código
  1. #include <iostream.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int main()
  6. {
  7. int i;
  8. double num=23.875;
  9. int intpart=(int)num;
  10. double decpart= num-intpart;
  11. double resultado;
  12. char multi[10];
  13. char m[10];
  14. int cambio;
  15. int fracion[10];
  16. cout<<intpart<<" "<<decpart<<endl;
  17.  for(i=0;i<sizeof(decpart);i++)
  18.  {
  19.   intpart=decpart*2;
  20.   itoa(intpart,m,10);
  21.  
  22.   if(intpart<=1)
  23.   cout<<0;
  24.   else
  25.   cout<<1;
  26.  }
  27.  
  28.  
  29. system("pause");
  30. return 0;
  31. }


Título: Re: Ayuda fraccionario-binario
Publicado por: alexis33de en 31 Mayo 2011, 15:18 pm
alguien algún comentario?


Título: Re: Ayuda fraccionario-binario
Publicado por: Akai en 31 Mayo 2011, 15:35 pm
Tu problema está en que realizas mal el algoritmo.No se trata de ir multiplicando, sino que has de ir dividiendo. Por otro lado, te aconsejaría que guardases el resultado en una cadena de carácteres, en vez de en nñúmeros

Se trata de lo siguiente:

numero=x.825

frac=0.825
frac  >= 1/2 (0.5)? si 1 frac=frac-1/2

frac=0.325
frac >= 1/4 (0.25)? si: 1 frac=frac-1/4

frac=0.125
frac >= 1/8 (0.125)? si: 1 frac=frac-1/8.

frac=0
frac >= 1/16(0.0625)? no: 0
...


PD: No es de buena educación en un foro postear 10 horas después de tu propio post porque nadie haya dicho nada todavía


Título: Re: Ayuda fraccionario-binario
Publicado por: alexis33de en 1 Junio 2011, 03:15 am
Lo que paso es que como ayer puse esa duda , a bien entrada la noche y en la mñn vi que no habia comentarios entonces puse ese para q vuelva a subir en la lista de temas para ver si alguien me podia ayudar.
Hize lo que me dijiste pero funciona masomenos ya que tengo   un problema en el limite del for que convierte fraccionarios. Puse el codigo y un comentario donde esta el problema
Código
  1. #include <iostream>
  2. #include <stdlib>
  3. #include <math.h>
  4.  
  5. int main()
  6. {
  7. int numero;
  8. int residuo;
  9. int n;
  10. int  n2=0;
  11. int  m=1;
  12. int i;
  13. double num=0;
  14. cout<<"Escribe el numero: ";
  15. cin>>(num);
  16. int intpart=(int)num;
  17. double decpart= num-intpart;
  18. double resultado;
  19. char multi[10];
  20. int cambio;
  21. int j;
  22. char fracion[10];
  23. while(intpart>0)
  24. {
  25.    n=intpart%2;
  26.    intpart/=2;
  27.    n2+=(n*m);
  28.    m*=10;
  29.  
  30. }
  31. cout<<"decimal: "<<n2<<".";
  32. // PROBLEMA AQUI XD:
  33. for(i=1;i<5;i++)
  34.  {
  35.  
  36.   if(decpart>=(1/pow(2,i)))
  37.    {
  38.    cout<<"1";
  39.  
  40.    }
  41.   else{
  42.   cout<<"0";
  43.  
  44.   }
  45.  
  46.   decpart=decpart-(1/pow(2,i));
  47.  
  48.  }
  49. system("PAUSE");
  50. return 0;
  51. }
  52.  


Título: Re: Ayuda fraccionario-binario
Publicado por: Akai en 1 Junio 2011, 12:54 pm
Realizas mal el algoritmo, se resta SI y SOLO SI tienes el 1, sino, no se resta. Lo que siempre se hace es modificar la potencia.

Lo que paso es que como ayer puse esa duda , a bien entrada la noche y en la mñn vi que no habia comentarios entonces puse ese para q vuelva a subir en la lista de temas para ver si alguien me podia ayudar.

Como dije, eso es mala educación.