Mostrando entradas con la etiqueta cambio. Mostrar todas las entradas
Mostrando entradas con la etiqueta cambio. Mostrar todas las entradas

martes, 29 de diciembre de 2020

Cambio de base

Vimos en la explicación del operador MOD un ejemplo de hacer un cambio de base de un número decimal a un binario. En esta oportunidad lo que haremos es generalizar este ejemplo y hacer un programa en C++ que haga el cambio de base del decimal a uno cualquiera que introduzcamos por pantalla.

Un ejemplo de ejecución sería el siguiente:



Lo que vemos en este ejercicio es el uso de:

  • El operador MOD (%)
  • El iterador do-while
  • El iterador for con índice creciente y decreciente

A continuación os dejo el código y podríamos pensar algunas variantes como la representación en base hexadecimal teniendo en cuenta las letras.


int main(int argc, char** argv) {

int base10;

int baseN;

char res[50]; //array que almacena los residuos según los va calculando

int nRes = 0;

char res2[50]; //array que almacena los residuos con la lectura inversa (resultado final)

printf("Ingresa un numero en base decimal:");

scanf("%d", &base10);

printf("\nIngresa la base a la que quieres cambiar:");

scanf("%d", &baseN);

int q = base10;

int r = 0;

//calcula residuos hasta que el cociente es 0

do{

r = q % baseN; //calcula residuo

q = q / baseN; //recalcula la nueva "q" para la siguiente iteración

res[nRes] = r; //concatena el residuo al resultado

nRes++; //número de cifras del resultado

}while(q > 0);


//invierte el resultado (la lectura de los residuos es invertida)

for(int i = (nRes - 1); i >= 0; i--) res2[nRes - i - 1] = res[i];

//imprime  resultado en pantalla

printf("\n%d en base %d es: ", base10, baseN);

for(int i = 0; i < nRes; i++) printf("%i", res2[i]);

return 0;

}