Você está na página 1de 4

%ENUNCIADO DE EJERCICIO

%CONVERTIR N�MERO A BINARIO,OCTAL,HEXADECIMAL; SEG�N LA OPCI�N A SELECCIONAR


clc
b=1;
while b==1

clc
fprintf('CONVERSOR \n\n');
num=input('INGRESE NUMERO..: ');
fprintf('\nSELECCIONE UNA OPCION PARA CONVERTIR\n');
disp('*********************************');
fprintf('\n1)Binario\n2)Octal\n3)Hexadecimal\n\n');
opcion=input('Opcion..: ');

while opcion>3||opcion<1
fprintf('Opcion incorrecta, intente de nuevo\n');
opcion=input('Opcion..: ');
end
%////////////////// <VARIABLES>
cociente=floor(num);
resto=0;
conversion='';
salida='';
contador=0;
contador_s=1;
parteDecimal=0;
productoDecimal=0;
salidaDecimal='';
restoDecimal=1;
salidaEntera='';
j=0;
%////////////////////// </VARIABLES>

switch opcion
case 1,
%////////// <DECIMAL-BINARIO>
%conversion de parte entera
while cociente>0
resto=rem(cociente,2);
cociente=floor(cociente/2);
conversion=strcat(conversion,num2str(resto));
contador=contador+1;
end

for i=contador:-1:1
salida(contador_s:contador_s)=conversion(i:i);
contador_s=contador_s+1;
end
%/conversion de parte entera

%conversion de parte decimal

productoDecimal=0;
salidaDecimal='';
restoDecimal=1;
parteDecimal=num-floor(num);
if parteDecimal==0
clc
fprintf(strcat('\nDECIMAL..: ',num2str(num),' ===>
BINARIO..:',salida,'\n'));
else
productoDecimal=floor(parteDecimal*2);
parteDecimal=(parteDecimal*2)-productoDecimal;

while j<5
if parteDecimal>0
salidaDecimal=strcat(salidaDecimal,num2str(productoDecimal));
productoDecimal=floor(parteDecimal*2);
parteDecimal=(parteDecimal*2)-productoDecimal;

end
j=j+1;
end
clc
fprintf(strcat('\nDECIMAL..: ',num2str(num),' ===>
BINARIO..:',salida,'.',salidaDecimal,'\n'));
j=0;

end
%/conversion de parte decimal
%////////// </DECIMAL-BINARIO>

case 2,
%///////// <DECIMAL-OCTAL>
%conversion parte entera
while cociente>0
resto=rem(cociente,8);
cociente=floor(cociente/8);
conversion=strcat(conversion,num2str(resto));
contador=contador+1;
end

for i=contador:-1:1
salida(contador_s:contador_s)=conversion(i:i);
contador_s=contador_s+1;
end

%/conversion parte entera

%conversion parte decimal

productoDecimal=0;
salidaDecimal='';
restoDecimal=1;

parteDecimal=num-floor(num);

if parteDecimal==0
clc
fprintf(strcat('\nDECIMAL..: ',num2str(num),' ===>
OCTAL..:',num2str(salida),'\n'));
else
productoDecimal=floor(parteDecimal*8);
parteDecimal=(parteDecimal*8)-productoDecimal;

while j<5
if parteDecimal>0
salidaDecimal=strcat(salidaDecimal,num2str(productoDecimal));
productoDecimal=floor(parteDecimal*8);
parteDecimal=(parteDecimal*8)-productoDecimal;
end
j=j+1;
end
clc
fprintf(strcat('\nDECIMAL..: ',num2str(num),' ===>
OCTAL..:',salida,'.',salidaDecimal,'\n'));
j=0;

end
%/conversion parte decimal
%///////// </DECIMAL-OCTAL>

case 3,
%///////// <DECIMAL-HEXADECIMAL>
%conversion parte entera
while cociente>0
resto=rem(cociente,16);
cociente=floor(cociente/16);
if resto>9
switch resto
case 10,
conversion=strcat(conversion,'A');
contador=contador+1;
case 11,
conversion=strcat(conversion,'B');
contador=contador+1;
case 12,
conversion=strcat(conversion,'C');
contador=contador+1;
case 13,
conversion=strcat(conversion,'D');
contador=contador+1;
case 14,
conversion=strcat(conversion,'E');
contador=contador+1;
case 15,
conversion=strcat(conversion,'F');
contador=contador+1;

end
else
conversion=strcat(conversion,num2str(resto));
contador=contador+1;
end

end

for i=contador:-1:1
salida(contador_s:contador_s)=conversion(i:i);
contador_s=contador_s+1;
end

%end
%/conversion parte entera
%conversion parte decimal
productoDecimal=0;
salidaDecimal='';
restoDecimal=1;

parteDecimal=num-floor(num);

if parteDecimal==0
clc
fprintf(strcat('\nDECIMAL..: ',num2str(num),' ===>
HEXADECIMAL..:',num2str(salida),'\n'));
else
productoDecimal=floor(parteDecimal*16);
parteDecimal=(parteDecimal*16)-productoDecimal;

while j<5
if parteDecimal>0
if productoDecimal>9
switch productoDecimal
case 10,
salidaDecimal=strcat(salidaDecimal,'A');
case 11,
salidaDecimal=strcat(salidaDecimal,'B');
case 12,
salidaDecimal=strcat(salidaDecimal,'C');
case 13,
salidaDecimal=strcat(salidaDecimal,'D');
case 14,
salidaDecimal=strcat(salidaDecimal,'E');
case 15,
salidaDecimal=strcat(salidaDecimal,'F');
end
else
salidaDecimal=strcat(salidaDecimal,num2str(productoDecimal));
end
productoDecimal=floor(parteDecimal*16);
parteDecimal=(parteDecimal*16)-productoDecimal;
end
j=j+1;
end
clc
fprintf(strcat('\nDECIMAL..: ',num2str(num),' ===>
HEXADECIMAL..:',salida,'.',salidaDecimal,'\n'));
j=0;

end
%/conversion parte decimal
%///////// </DECIMAL-HEXADECIMAL>

end

b=input('\nDesea continuar? 1-S� / Enter-no :');


end

Você também pode gostar