Programación General > C/C++

 Cambio de base

(1/2) > >>

ermiguel1979:
Hola a todos, tengo que hacer un programita que dice lo siguiente:
Realizar un porgrama para convertir números enteros decimales (en base 10) a sus respectivas representaciones octales (en base 8), por medio de sucesivas divisiones.

Y... no tengo ni idea de como hacerlo. Os agradezco toda la ayuda que me podais dar...

Un saluo!!!

diego.martinez:
tal y como te habran  enseñado en clase, la conversion de base se hace simplemente dividiendo el numero en base diez entre el valor de base.
Despues, coges todos los restos de las distintas divisiones y los colocas en orden inverso (osea, desde el ultimo al primero) y ese es el valor en la nueva base.

ermiguel1979:
Buenos días. Lo de dividir lo tengo claro, pero como lo hago para almacenar los restos y luego mastrarlos al revés???, será con un vector u algo así...

Los vectores no se como se usan.... le voy a preguntar al profe, pero si pudieses aclararme algo...

Muchas gracias. Un saludo.

diego.martinez:
para ver el resultado de una division puedes usar

para ver el  valor floor(dividendo / divisor)
para ver el resto dividento%divisor

a medida que extraigas los restos ve metiendolos por la derecha o bien en un array o bien multiplicando por el valor de representación.

ermiguel1979:
Buenas tardes Diego, te mando lo que tengo hecho. Debería funcionar, jejejjeje; pero me dá un problema al leer en el vector tras la primera iteración del bucle
while. He incluido algnos PRINTF para ver lo que va haciendo...
Porfa, echale un vistazo que yo no veo el error...

/*EJERCICIO 6; PRACTICA 4*/

#include <stdio.h>
#include <stdlib.h>

/*Algoritmo -> CAMBIO DE BASE DECIMAL-OCTAL*/
int main (void){
   //DECLARACION DE VARIABLES
   /*entradas*/
   int numero;         //el numero a cambiar de base (dado en base 10)
   /*Intermedias*/
   int i, j;         //contadores de bucles
   int cociente;      //cociente de las sucesivas divisiones del numero/8
   int resto;         //'resto' de numero/8;va al array;sera el numero,base 8
   /*Salidas*/
   int octal [10];         /*Array (vector) de tipo entero
   para guardar el numero en base octal (base 8)*/
   /*Leer Variables*/
   printf("Escribir numero en base 10:  ");
   scanf("%i", &numero);
   
   //OPERACIONES
   i=2;         //se prepara 'i' con ese valor para que el bucle while_
               //guarde los valore de 'resto' en los espacios del vector
   
   cociente=numero/8;      //la primera division se hace fuera del bucle
   resto=numero%8;
   octal[1]=resto;
   printf("%i, %i, %i, %in", i, cociente, resto, octal[1]);
   while (cociente>=8){
      resto=cociente%8;
      cociente=cociente/8;
      octal=resto;
      i++;            //'i' aumenta +1 cada iteración recorriendo 'octal'
   }
   printf("%i, %i, %i, %in", i, cociente, resto, octal);
   i=i+1;
   octal=cociente;      //para guardar el ultimo valor de 'cociente'
   
   //RESULTADOS
   printf("%i, en base octal es: ", numero);
   for(j=i; j<=1; j--){      //recorre el vector de atras hacia delante
      printf("%i",octal[j]);
   }   
}


Oye, muchas gracias por tu tiempo y felices fiestas!

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa