Matlab - Calculadora

 
Vista:
sin imagen de perfil

Calculadora

Publicado por Luis fernando (1 intervención) el 06/10/2016 23:18:55
Buenas tardes amigos programadores

Me encuentro realizando una calculadora en Matlab la cual realiza operaciones básicas como son la suma, resta y multiplicación. Lo especial de esta calculadora es que debe realizar estas operaciones con los sistemas hexadecimal, binario, octal y decimal. Con los sistemas Octal y decimal no tuve problemas debido a que use algunas funciones para realizar las conversiones y funcionaron perfectamente, pero con el sistema hexa y binario he tenido varios inconvenientes.

Esta en una muestra de la interfaz que estoy trabajando.

1

Como se pueden dar cuenta utilizo dos cajas de texto donde son declaradas como ¨a¨ y ¨b¨ respectivamente. para los sistemas decimal y octal use la función a = str2num(get(hObject,'String')) para convertir los datos que estan entrando a un tipo de variable double y así poder operar bien.

El problema que presento con el sistema hexa es que este sistema maneja número de 1-9 y a partir de ahí empiezan letras tales como A=10 B=11 C=12 D=13 E=14 F=15... Al digitar mediante teclado una letra como la A Matlab no captura nada. No se tal vez tengan una idea de como pueda realizar este codigo.

El problema con el sistema binario es que al digitar un numero binario.. Ejm= 0010 es decimal equivale a un dos, tambien tengo problema de conversión porque matlab me recibe este numero como un double, debido a la conversión que uso con la función a = str2num(get(hObject,'String')) lo que necesito es que matlab me reciba este numero como un binario y no como un decimal, había leído que tenía que guardar este numero en un arreglo.

De ante mano agradezco su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Daniel
Val: 269
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Calculadora

Publicado por Daniel (264 intervenciones) el 07/10/2016 17:12:44
Tanto la conversión de binario a decimal o de hexa a decimal (a diferencia de la conversión octal-decimal) necesitan que el dato ingresado sea texto. Supongo que entonces dependiendo de en que base realices las operaciones tendrás que convertir o no el string a número.
Supongo que la idea es convertir cualquier base a la decimal realizar la operacion y luego volver a la base original....
Para binario sería algo asi

1
2
3
4
5
6
7
8
9
%%%%%%%%%%%%%%%
a=bin2dec(get(objeto_a,'String')); % convierto "a" de binario a decimal
b=bin2dec(get(objeto_b,'String')); % convierto "b" de binario a decimal
% cuentas
s=a+b;
r=a-b;
p=a*b;
res=dec2bin(p);% paso de decimal a binario (el resultado ya es un string)
set(objeto_resultado,'string',res)

y para octal asi


1
2
3
4
5
6
7
8
9
%%%%%%%%%%%%%%%%
a=oct2dec(str2double(get(objeto_a,'String'))); % convierto "a" de octal a decimal
b=oct2dec(str2double(get(objeto_b,'String'))); % convierto "b" de octal a decimal
% cuentas
s=a+b;
r=a-b;
p=a*b;
res=num2str(dec2oct(p));% paso de decimal a octal y luego a un string
set(objeto_resultado,'string',res)


Comentanos como te fue

Saludos

Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar