Hola! primero q nada antes d subir un programa revisa mejor el codigo, mas q nada para evitar los errores de sintaxis q tenes(ya q me trajo varios problemas :S) . En
for(i=cuanto-1;1>=0;i--);
el ; esta mal y pusiste 1>=0
Despues en la funcion conv_ent
for(i=0;num>0;i++);
tambien tenes mal puesto el ;
Ahora el programa... no sabia q se podia pasar cualquier numero fraccionario a cualquier base, solo me acordaba q se podia en binario. En fin, no mire el codigo q hiciste para la funcion conv_frac() ( parecia dificil de analizar
), asi q decidi hacer la mia basado en este video
http://www.youtube.com/watch?v=x9x3kMf_4Ho#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void conv_ent(int *p,int num, int base);
void conv_frac(int *p,double num,int base,int pre);
int main(){
double x,pfrac,pentera,cuantos;
int parte_ent,*digitos[2],cuanto=0,precision,base,i;
printf("Introduzca un numero real\n");
printf("Introduzca la base a la que quiere convertir el numero\n");
printf("Diga cuantos digitos se calcularan para la parte fraccionaria\n");
cuanto=(int)cuantos;
parte_ent=(int)pentera;
digitos
[0]=(int*)malloc(sizeof(int)*cuanto
);
conv_ent(digitos[0],parte_ent,base);
digitos
[1]=(int*)malloc(sizeof(int)*precision
); conv_frac(digitos[1],pfrac,base,precision);
printf("La representacion en base %d del numero %lf es: ",base
,x
); for(i=cuanto-1;i>=0;i--)
printf("."); /* este printf debe ir fuera del for anterior */
for(i=0;i<precision;i++)
return 0;
}
void conv_ent(int p[],int num,int base){
int i;
for(i=0;num>0;i++){
p[i]=num%base;
num/=base;
}
}
void conv_frac(int *p,double num,int base,int pre){
int i,k;
double h=0.0;
double pent,pfrac;
/*for(i=1;i<=pre;i++){
for(k=0;k<base;k++){
if(num>h+(k/pow(base),i)))&& num<=(h(k+1)/pow(base,i)){
p[i-1]=k;
h+=(k/pow(base,i));
break;
}
}
}*/
for(i=0;i<pre;i++) {
num=num*base; /* multiplico x la base */
num
=modf(num
,&pent
); /* despues d ser multiplicado obtengo la parte entera y fraccionaria */ p[i]=(int)pent; /* guardo en el arreglo la parte entera */
if(num==0.0)
break; /* si llega aca es xq la parte fraccionaria se hizo cero por lo tanto hay q salir del bucle */
}
}
Acordate q solo lo hic pensando en pasarlo a binario, fijate si sirve para cualquier base
Saludos