calculadora de conversión de variables
Publicado por carlos areiza (1 intervención) el 09/06/2022 22:34:11
void setup() {
//Calculadora que pueda cambiar entre las siguientes bases: binaria, octal, decimal, hexadecimal
// Menú 1- pedir al usuarion en que base quiere trabajar 2- desirle a usuario ingresé número 3- a qué base quiere convertir el número 4- mostrar número
// se debe emplear un teclado matricial
// ya la parte logica esta lista, faltaria solo acoplar el menú que no se como hacerlo
}
void loop() {
// put your main code here, to run repeatedly:
// Varibles que vamos a usar
int numero; // Numero que ingresa el usuario
int base_actual; // Base en que esta representado el numero ingresado
int base_destino; // Base a la que se desea convertir el numero
// E: Leer los datos de entrada
// Leer la base actual del KeyPad
base_actual = keypad.ReadInt(); /// Investigar como
// leer la cadena del keypad
String cadena;
// Tarea : investigar ocmo leer el key pad esperando dos segundos para recibir la entrada
cadena = keypad.readstr();
numero = entradaABase( cadena, base_actual );
// P: Cuando ya he leido el numero y la base destino
String resultado;
resultado = numeroABase( numero, base_destino );
// S: Mostrar el resultado
lcd.print( resultado );
}
// Convierte un numero a su representacion en un sistema de numeracion
// numero: cifra que se quiere representar
// base: es la base del sistema de numeracion
String numeroABase( int numero, int base ){
// Cadena que se va a mostrar
String resultado = "";
// Residuo de la division por la base
int residuo;
int cociente=numero;
// Tabla que indica el carcter a usar para cada digito segun la base
char caracteres [] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
while( cociente > base ){
residuo = cociente % base;
cociente = cociente / base;
resultado = caracteres[residuo] + resultado;
}
resultado = caracteres[cociente] + resultado;
return resultado;
}
// Convierte una cadena leida del key pad en un numero en la base deseada
int entradaABase( String cadena, int base ){
// Variable qu econtiene el valor de un digito segun su posicion en el numero
int valor_posicional;
// Acumulador que va llevando la suma de los valores posicionales de cada digito
int suma=0;
// POsicion dentro de la cadena en cada repeticion del ciclo
int pos;
pos = strlen( cadena ) - 1;
valor_posicional = 1;
while( pos >= 0 ){
int temp = (int)cadena[pos];
int digito;
if( temp >= 48 && temp <= 58)
digito = temp - 48;
if( temp >= 65 && temp <= 75 )
digito = temp - 55;
int valor = digito * valor_posicional;
suma = suma + valor;
pos = pos - 1;
valor_posicional = valor_posicional * base;
}
return suma;
}
//Calculadora que pueda cambiar entre las siguientes bases: binaria, octal, decimal, hexadecimal
// Menú 1- pedir al usuarion en que base quiere trabajar 2- desirle a usuario ingresé número 3- a qué base quiere convertir el número 4- mostrar número
// se debe emplear un teclado matricial
// ya la parte logica esta lista, faltaria solo acoplar el menú que no se como hacerlo
}
void loop() {
// put your main code here, to run repeatedly:
// Varibles que vamos a usar
int numero; // Numero que ingresa el usuario
int base_actual; // Base en que esta representado el numero ingresado
int base_destino; // Base a la que se desea convertir el numero
// E: Leer los datos de entrada
// Leer la base actual del KeyPad
base_actual = keypad.ReadInt(); /// Investigar como
// leer la cadena del keypad
String cadena;
// Tarea : investigar ocmo leer el key pad esperando dos segundos para recibir la entrada
cadena = keypad.readstr();
numero = entradaABase( cadena, base_actual );
// P: Cuando ya he leido el numero y la base destino
String resultado;
resultado = numeroABase( numero, base_destino );
// S: Mostrar el resultado
lcd.print( resultado );
}
// Convierte un numero a su representacion en un sistema de numeracion
// numero: cifra que se quiere representar
// base: es la base del sistema de numeracion
String numeroABase( int numero, int base ){
// Cadena que se va a mostrar
String resultado = "";
// Residuo de la division por la base
int residuo;
int cociente=numero;
// Tabla que indica el carcter a usar para cada digito segun la base
char caracteres [] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
while( cociente > base ){
residuo = cociente % base;
cociente = cociente / base;
resultado = caracteres[residuo] + resultado;
}
resultado = caracteres[cociente] + resultado;
return resultado;
}
// Convierte una cadena leida del key pad en un numero en la base deseada
int entradaABase( String cadena, int base ){
// Variable qu econtiene el valor de un digito segun su posicion en el numero
int valor_posicional;
// Acumulador que va llevando la suma de los valores posicionales de cada digito
int suma=0;
// POsicion dentro de la cadena en cada repeticion del ciclo
int pos;
pos = strlen( cadena ) - 1;
valor_posicional = 1;
while( pos >= 0 ){
int temp = (int)cadena[pos];
int digito;
if( temp >= 48 && temp <= 58)
digito = temp - 48;
if( temp >= 65 && temp <= 75 )
digito = temp - 55;
int valor = digito * valor_posicional;
suma = suma + valor;
pos = pos - 1;
valor_posicional = valor_posicional * base;
}
return suma;
}
Valora esta pregunta


0