Mostrando entradas con la etiqueta MOD. Mostrar todas las entradas
Mostrando entradas con la etiqueta MOD. 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;

}

domingo, 25 de octubre de 2015

Operación Residuo (MOD)

El set de instrucciones de cada lenguaje de programación puede llegar a ser tan amplio que no llegamos a aprenderlo todo y mucho menos saber en qué casos podemos sacar ventaja de utilizar una instrucción determinada.
En este post quiero hablar de la instrucción de Residuo, conocida como % en C, C++, php, java o MOD en COBOL, PLSQL, Pascal.

Recordando un poco de matemáticas, sabemos que:
Dividendo = Cociente * Divisor + Residuo
Ejm. 7 = 3 * 2 + 1
Si despejamos el residuo sería:
Residuo = Dividendo - (Cociente * Divisor)

La operación Residuo se calcula utilizando el Dividendo y el cociente o el dividendo y el divisor. La sintaxis sería:
Residuo = Dividendo % Cociente (1 = 7 % 3)
Residuo = Dividendo % Divisor (1 = 7 % 2)

¿En qué casos podemos utilizar esta operación?
Sólo os daré dos casos típicos:

Realizar una acción cuando un número es múltiplo de otro
Imprimir los 30 primeros múltiplos de 3
int numerosImpresos = 0 //controla el número de números impresos
int contador = 1; //Es el número que hace de Dividendo en la operación
while(numerosImpresos < 30)
{
  if (contador % 3 == 0) //si el residuo es 0, es una división exacta por tanto es múltiplo
  {
    Console.write(contador);  
  }
  contador ++;
}

Realizar un cambio de base
Cambiar el número 5 de base decimal a binario.
Como se cambia a sistema binario de utiliza el divisor = 2 (Base N, implica divisor N)

int dividendo = 5;
int divisor = 2;
string cambioBase = “”;

while(dividendo / divisor >1)
{
  residuo = dividendo % divisor;
  dividendo = dividendo / divisor;
  cambioBase = residuo + cambioBase; //se va concatenando a la izquierda
}
cambioBase = dividendo + cambioBase; //en esta variable está el resultado "101"



¿Se os ocurre otro ejemplo?