Programación General > C/C++
Cambio de base
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
[#] Página Siguiente
Ir a la versión completa