0% encontró este documento útil (0 votos)
19 vistas6 páginas

Paso 4

El documento describe un programa que permite convertir tres números en base 10 a una base seleccionada por el usuario entre 2 y 15, y calcular la suma de los números convertidos. Incluye detalles sobre la interfaz gráfica, la entrada de datos y la lógica de conversión, así como funciones para obtener información sobre las bases y realizar las conversiones. El programa muestra los resultados en un cuadro de diálogo, incluyendo el nombre de la base, los símbolos utilizados y la suma total.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
19 vistas6 páginas

Paso 4

El documento describe un programa que permite convertir tres números en base 10 a una base seleccionada por el usuario entre 2 y 15, y calcular la suma de los números convertidos. Incluye detalles sobre la interfaz gráfica, la entrada de datos y la lógica de conversión, así como funciones para obtener información sobre las bases y realizar las conversiones. El programa muestra los resultados en un cuadro de diálogo, incluyendo el nombre de la base, los símbolos utilizados y la suma total.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

2.

Contexto de la actividad

Consulte el referentes bibliográficos de la Unidad 3, como material


complementario para abordar conceptos que permitan el desarrollo de la
actividad.
Los integrantes del grupo darán solución al siguiente escenario:
a. Realice un programa que permita realizar la conversión de tres
números en base 10 a sus correspondientes números en cualquier base de
la 2 a la 15 según seleccione el usuario.

b. Una vez convertidos, calcule la suma de ellos.

Código:
function conversionBaseGUI
% Crear la ventana principal
ventana = uifigure('Name', 'Conversión de Base', 'Position', [100 100
400 300]);

% Crear componentes de entrada


etiqueta_numeros = uilabel(ventana, 'Text', 'Ingrese los tres números
decimales:');
etiqueta_base = uilabel(ventana, 'Text', 'Base de conversión (2-
15):');
entrada_numeros = uieditfield(ventana, 'Text', 'Position', [180 230
200 22]);
entrada_base = uieditfield(ventana, 'numeric', 'LowerLimit', 2,
'UpperLimit', 15, 'Position', [180 200 50 22]);

% Crear botón de conversión


boton_convertir = uibutton(ventana, 'Text', 'Convertir', 'Position',
[180 160 100 30], 'ButtonPushedFcn',
@(btn,event)convertirNumeros(btn,entrada_numeros.Value,entrada_base.Value
));

% Función para realizar la conversión cuando se presiona el botón


function convertirNumeros(~,numeros_str,base)
% Convertir la cadena de números a una matriz de números
decimales
numeros = str2num(numeros_str);

% Verificar si se ingresaron tres números válidos


if numel(numeros) ~= 3
errordlg('Debe ingresar tres números decimales separados por
espacios.', 'Error de entrada', 'modal');
return;
end

% Convertir cada número a la base seleccionada


numeros_convertidos = cell(1, 3);
suma_total = 0;
for i = 1:3
numeros_convertidos{i} = dec2base(numeros(i), base);
suma_total = suma_total + base2dec(numeros_convertidos{i},
base);
end

% Mostrar resultados en un cuadro de diálogo


texto_resultados = sprintf('Base de conversión: %d\n\nNúmeros
convertidos:\n%s\n%s\n%s\n\nSuma de los números convertidos: %d', ...
base, numeros_convertidos{1}, numeros_convertidos{2},
numeros_convertidos{3}, suma_total);
msgbox(texto_resultados, 'Resultados de Conversión', 'modal');
end
end

% Llamar a la interfaz gráfica de usuario

El usuario debe ingresar:


• Los tres números decimales a convertir
• La base a la cual desea hacer la conversión de los tres números

Una vez ingrese estos datos el programa debe retornar:


• El nombre de la base.
• Los símbolos empleados en dicha base para representar las cifras.
• Los tres números convertidos en la base seleccionada por el usuario.
• La suma de los tres números convertidos a la base selecciona por el
usuario.
function conversionBaseGUI
% Crear la ventana principal
ventana = uifigure('Name', 'Conversión de Base', 'Position', [100 100 400 300]);

% Crear componentes de entrada


etiqueta_numeros = uilabel(ventana, 'Text', 'Ingrese los tres números decimales:');
etiqueta_base = uilabel(ventana, 'Text', 'Base de conversión (2-15):');
entrada_numeros = uieditfield(ventana, 'Text', 'Position', [180 230 200 22]);
entrada_base = uieditfield(ventana, 'numeric', 'LowerLimit', 2, 'UpperLimit', 15,
'Position', [180 200 50 22]);

% Crear botón de conversión


boton_convertir = uibutton(ventana, 'Text', 'Convertir', 'Position', [180 160 100 30],
'ButtonPushedFcn',
@(btn,event)mostrarResultados(btn,entrada_numeros.Value,entrada_base.Value));

% Función para mostrar los resultados


function mostrarResultados(~,numeros_str,base)
try
% Realizar la conversión de números y obtener información de la base
[nombre_base, simbolos, numeros_convertidos, suma_total] =
convertirNumeros([], numeros_str, base);

% Mostrar los resultados en un cuadro de diálogo emergente


texto_resultados = sprintf('Nombre de la base: %s\nSímbolos empleados: %s\n\
nNúmeros convertidos:\n%s\n%s\n%s\n\nSuma de los números convertidos: %d', ...
nombre_base, simbolos, numeros_convertidos{1}, numeros_convertidos{2},
numeros_convertidos{3}, suma_total);
msgbox(texto_resultados, 'Resultados de Conversión', 'modal');
catch ME
errordlg([Link], 'Error', 'modal');
end
end

% Función para obtener el nombre de la base y los símbolos empleados en dicha


base
function [nombre_base, simbolos] = obtenerInfoBase(base)
nombres_bases = {'Binaria', 'Ternaria', 'Cuaternaria', 'Quinaria', 'Senaria', ...
'Septenaria', 'Octal', 'Novenaria', 'Decimal', 'Undecimal', ...
'Duodecimal', 'Tridecimal', 'Tetradecimal', 'Pentadecimal'};
simbolos_bases = {'0', '1', '012', '0123', '012345', '0123456', '01234567', ...
'012345678', '0123456789', '0123456789A', '0123456789AB', ...
'0123456789ABC', '0123456789ABCD', '0123456789ABCDE'};
nombre_base = nombres_bases{base};
simbolos = simbolos_bases{base};
end

% Función para convertir un número en base 10 a cualquier base entre 2 y 15


function [nombre_base, simbolos, numeros_convertidos, suma_total] =
convertirNumeros(~,numeros_str,base)
% Convertir la cadena de números a una matriz de números decimales
numeros = str2num(numeros_str);

% Verificar si se ingresaron tres números válidos


if numel(numeros) ~= 3
error('Debe ingresar tres números decimales separados por espacios.');
end

% Convertir cada número a la base seleccionada


numeros_convertidos = cell(1, 3);
suma_total = 0;
for i = 1:3
numeros_convertidos{i} = dec2base(numeros(i), base);
suma_total = suma_total + base2dec(numeros_convertidos{i}, base);
end

% Obtener información de la base


[nombre_base, simbolos] = obtenerInfoBase(base);
end
end

% Llamar a la interfaz gráfica de usuario

c. Debe definir dos funciones así:


 Realice una función que reciba la base de un sistema de numeración
entre 2 y 15 y le devuelva el nombre de la base y los símbolos
empleados en dicha base.
 Una función que haga la conversión de un número en base 10 a un
número en base 2 a la 15.

% Función para obtener información de la base


function info_base = info_Base(base)
function convertirBaseGUI
%Función que recibe la base de un sistema de numeración y devuelve un
struct con información sobre la base.

% Parámetros:
% base (int): La base del sistema de numeración (entre 2 y 15).

% Retorno:
% info_base (struct): Estructura con la información sobre la base,
incluyendo:
% - nombre: Nombre del sistema de numeración (ej. 'Binario',
'Octal', 'Hexadecimal').
% - simbolos: Vector de caracteres con los símbolos utilizados en
la base (ej. ["0", "1"], ["0", "1", "2", "3", ..., "7"]).

if base < 2 || base > 15


error('La base debe estar entre 2 y 15');
end

nombres = {'Binario', 'Ternario', 'Cuaternario', 'Quinary', 'Senario',


'Septenario', ...
'Octal', 'Nonario', 'Decimal', 'Undecimal', 'Duodecimal',
...
'Tridecimal', 'Tetradeciimal', 'Pentadecimal'};

simbolos = repmat(char('0'):char('9'), 1, 9);


simbolos(10:end) = char('A'):char('F');
simbolos = simbolos(1:base);

info_base.nombre = nombres{base};
info_base.simbolos = simbolos;
end

% Función para convertir un número en base 10 a otra base


function numero_convertido = convertirABaseGUI(numero, base)
%Función que convierte un número en base 10 a una base específica.

% Parámetros:
% numero (int): El número en base 10 a convertir.
% base (int): La base a la que se desea convertir el número (entre 2 y
15).

% Retorno:
% numero_convertido (str): El número convertido a la base especificada.

if base < 2 || base > 15


error('La base debe estar entre 2 y 15');
end

if numero < 0
error('El número no puede ser negativo');
end

digitos = [];
while numero > 0
digito = mod(numero, base);
numero = floor(numero / base);
digitos = [digito, digitos];
end

simbolos = infoBase(base).simbolos;
numero_convertido = '';
for i = 1:length(digitos)
numero_convertido = [simbolos(digitos(i)), numero_convertido];
end
end

% Ejemplo de uso
% Obtener información de la base 8 (octal)
infoBase=info_base(8);
disp(['Base 8: ', info_base_octal.nombre]);
disp(['Símbolos: ', info_base_octal.simbolos]);

% Convertir el número 25 en base 8


numero_convertido_octal = convertirABase(25, 8);
disp(['25 en base 8: ', numero_convertido_octal]);

end

También podría gustarte