Descomposición en dígitos

De Ejercicios

Contenido

Enunciado

Crear un módulo o subalgoritmo que devuelva un array en el que cada posición contenga un dígito de un número entero dado. Por ejemplo, si el número de entrada fuera 109884, el resultado sería el siguiente array:

1 0 9 8 8 4

Soluciones

Programa en Matlab

Solución con programación básica

function vec = DescomponerEntero( n )
% FUNCION vec = DescomponerEntero( n )
% DESCRIPCIÓN: Devuelve un array en el que cada posición contiene un dígito del entero "n". 
% PARÁMETROS DE ENTRADA:
%    n: ENTERO; número que se va a descomponer
% PARÁMETROS DE SALIDA:
%    vec: ARRAY DE ENTEROS; dígitos del número "n"
 
% VARIABLES INTERNAS:
%    pos, tama: ENTEROS
%    v: ARRAY DE ENTEROS
 
%Obtener el valor absoluto de "n"
if n<0
    n = -n;
end
%Descomponer en dígitos
pos = 1;
while n>9
    v(pos) = rem(n,10);
    n = fix(n/10);
    pos = pos+1;
end
v(pos)=n;
%Dar la vuelta al array v porque tiene los dígitos de derecha a izquierda.
tama = length(v);
vec = zeros(1,tama);
for pos=1:tama
    vec(tama-pos+1)=v(pos);
end

Solución con programación Matlab avanzada

Para esta solución se va a utilizar la función num2str que convierte un número a un array de caracteres (cada elemento del array es el carácter de un dígito). A continuación se le resta el código ASCII de caracter '0' para que el array se convierta en la representación en número entero de cada dígito.

function vec = DescomponerEntero( n )
% FUNCION vec = DescomponerEntero( n )
% DESCRIPCIÓN: Devuelve un array en el que cada posición contiene un dígito del entero "n". 
% PARÁMETROS DE ENTRADA:
%    n: ENTERO; número que se va a descomponer
% PARÁMETROS DE SALIDA:
%    vec: ARRAY DE ENTEROS; dígitos del número "n"
 
% VARIABLES INTERNAS: ninguna
 
vec = num2str(n) - '0';
Tipos de soluciones