• Jueves 14 de Noviembre de 2024, 04:11

Autor Tema:  --multiplicaciones sucesivas--- redondeo de numeros (c++)  (Leído 4247 veces)

Nova05

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
--multiplicaciones sucesivas--- redondeo de numeros (c++)
« en: Domingo 11 de Abril de 2010, 21:39 »
0
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!!