Foros del Web » Programación para mayores de 30 ;) » C/C++ »

transformar de decimal a fraccion

Estas en el tema de transformar de decimal a fraccion en el foro de C/C++ en Foros del Web. hola a todos, tengo que tranformar de decimal a fraccion , y estoy trabado no se que mas hacer. voy aqui recien (es lo que ...
  #1 (permalink)  
Antiguo 16/05/2006, 12:40
Avatar de a n g e l u s  
Fecha de Ingreso: enero-2006
Ubicación: Chile
Mensajes: 237
Antigüedad: 19 años
Puntos: 1
De acuerdo transformar de decimal a fraccion

hola a todos,

tengo que tranformar de decimal a fraccion , y estoy trabado no se que mas hacer.

voy aqui recien (es lo que se me ocurrio), separar la parte entera de la parte decimal para luego dividir y hacer fraccion.

Código:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>



int main()
{
   
   char s1[49];
   char s2[2] = ".";
   char *ptr;
   unsigned long int uno=0, dos=NULL;
   int contar=0,paso=0;
   unsigned long int *a = NULL;
   unsigned long int *b = NULL;

        printf("Ingrese su numero : ");
        gets(s1);

//-------------- separara la parte entera de la parte decimal -----------------
   ptr = strtok( s1, s2 );    // Primera llamada => Primer token
       if(contar == 0){
          uno = atol(ptr);//asigno el valor traspasado a int
          a = &uno;
          contar++;
        }
   while( (ptr = strtok( NULL, s2 )) != NULL )    // Posteriores llamadas
          {
               if(contar == 1){
                         paso = strlen(ptr);
                         dos = atol(ptr);
                         b = &dos;
                         }
               contar++;
             }
printf("paso : %d\n",paso);
if(dos != NULL)
      printf("%i - %i\n",*a,*b);
else
      printf("%i\n",*a);

     getchar();//pausa
//-----------------------------------------------------------------------------


   return 0;

}
tambien encontre la funcion

Código:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

// FUNCION A OCUPAR MODF
int main()
{
   double valor, *iptr, resultado;

printf("Ingrese el valor con decimal : ");
scanf("%f",&valor);

   resultado = modf( valor, iptr );
   printf( "modf( %f, %f ) = %f\n", valor, *iptr, resultado );


system("pause");
getchar();
   return 0;
}
pero al ingresar los datos se cae el programa.

agradecido de antemano,
__________________
Atte,
A n g e l u s
Concepción - Chile
más vale respuestas bien pensadas, que 7000 post
  #2 (permalink)  
Antiguo 20/05/2006, 19:44
arm
 
Fecha de Ingreso: mayo-2006
Mensajes: 112
Antigüedad: 18 años, 7 meses
Puntos: 0
No entendi bien cual es resultado que buscas, si es una cadana o multiples variables conteniedno cada una de las partes del factor. O te refieres a efectuar un cambio entre tipo de datos.

Sin embargo (su pongo que intetas obtener un expresion de una fracion apartir de un numero real, en terminos matematicos), te puedo decir esto, la parte puedes obtener truncando el partametro, la deciamal (lado dercho del punto) la puede obtener restando el entero. Luego, el decimal restante le tines que eliminar el punto obteniendo el valor r (con lo que quiero decir que se comvertira en un entero, pero no me refiero a un cast de c++, solo la idea comun de eliminar el punto). la fraccion matematica que representa a la fraccion decimal original es el r entre 10 a la potencia n, donde n es la cantida de digitos de r. despues solo tines que concatenar valores (si buscas cadena)

te repito no estoy seguro de haber entedido tu proble(no acostumbro a leer un codigo sin saber su objetivo), asi que si perece que me estoy burlando, no es asi.
__________________
-> La duda adecuada es un buen comienzo <-
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 18:03.