hola otra vez!
Esta vez quisiera que checaran este codigo...
se trata sobre conversiones entre bases numericas.. ya saben... de binario a octal..etc pero aki lo voi a hacer solo de decimal a otras bases
pero cuando deseo introducir numeros decimales (ejemplo 20.875) ...el problema me lo encontre en la parte decimal...
Las conversiones para la parte entera ya la tengo lista...pero la parte decimal se me complico un poco...
Cuando hay "decimales", tengo que hacer multiplicaciones sucesivas y
por ejemplo el numero 0.875 base(10) lo quiero convertir a base(2) o binario:
0.875 × 2 = 1.75 entero=1
0.75 × 2 = 1.5 entero=1
0.5 × 2 = 1.00 entero=1
etc...
para cada multiplicacion se toman SOLO LOS ENTEROS DE CADA RESULTADO, y los decimales que sobran se vuelven a multiplicar por la base y asi....
como ingrese solo 3 decimales...dejo como respuesta solo 3 numeros
el resultado: 0.111 (2)
otro ejemplo:
el numero decimal 0.3742 a base (3):
0.3742 x 3 =1.1226 entero=1
0.1226 x 3 =0.3678 entero=0
0.3678 x 3 =1.1034 entero=1
como ingrese 3 decimales, el resultado tiene que tener 3 numeros
resultado= 101 (3)
obviamente al correr el programa no me sale lo que quiero...revisenlo porfas y me avisan!
el codigo es el siguiente:
#include<stdio.h>
#include<conio.h> //lo uso para el clrscr();
#include<math.h>
int d,base,g,resultado,div;
float b,c,decimal,res,r;
main(void){
clrscr();
printf("nIngresa la parte decimal (Ejemplo: 0.000) : " ); // se ingresa con todo y punto decimal (0.765, 0.986 , etc)
scanf("%f", &b);
printf("nEl numero que ingresaste fue: %.3f n", b);
printf("n¿Cuantos decimales contiene el numero anterior?:"); // por comodidad solo quiero 3 decimales en todos los casos , y la pregunta es necesaria para imprimir solo 3 numeros posteriormente
scanf("%d", &d);
printf("n¿A que base deseas convertir? : " );
scanf("%d", &base);
//conversion parte decimal
decimal=b*base;
r = decimal/1;
resultado = (int)r;
res=r-resultado;
printf(".");
for(g=1;g<=d;g++)
{
printf("%d", resultado);
}
printf(" (%d)", base);
}//fin del programa
compilado en turbo c++
bye!!