Matlab - Ayuda con ejercicio

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 385 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Ayuda con ejercicio

Publicado por Lekim (1 intervención) el 13/06/2021 18:30:55
Cree una función ‘es_bisiesto’ que reciba una matriz de años y devuelva una matriz con un
1 en la posición de los años bisiestos y un 0 en las posiciones de años no bisiestos. Un año es
bisiesto si es divisible entre 4 a menos que sea divisible entre 100, pero si es divisible por 100
y además por 400 también resulta bisiesto.

De ante mano GRACIAS :D
solo he podido hacer esto
1
2
3
4
5
6
7
8
9
10
11
clear all
fprintf('Ingresar una Matriz Año \n \n' )
f=input('Ingrese el numero de Filas para la Matriz \n');
c=input('Ingrese el numero de Columnas para la Matriz \n');
 
for i=1:f
    for j=1:c
 
 disp(['El elemento Año(',num2str(i),',',num2str(j),')'])
 
 A(i,j)=input('');
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 Jon
Val: 354
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Ayuda con ejercicio

Publicado por Jon (161 intervenciones) el 14/06/2021 09:23:09
Programa principal (main.m)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
%% Interfaz
fprintf('Ingresar una Matriz Año\n\n')
f=input('Ingrese el número de Filas para la Matriz: ');
c=input('Ingrese el número de Columnas para la Matriz: ');
fprintf('\n');
 
%% Matriz
ini = 2021;
step = 1;
for i = 1:f
    for j = 1:c
        M(i,j) = ini - step;
        step = step + 1;
    end
end
 
%% Programa
idx_bis = es_bisiesto(M);
Mbis = M(idx_bis);
Mbis_orden = sort(Mbis,'descend');
 
%% Resultados
fprintf('Matriz lógica de años bisiestos = \n\n');
disp(idx_bis);
fprintf('Años bisisestos = \n\n');
disp(Mbis_orden);

Función (es_bisiesto.m)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function idx_bis = es_bisiesto(M)
 
% Un año es bisiesto si es divisible entre 4 a menos que sea divisible
% entre 100, pero si es divisible por 100 y además por 400 también resulta bisiesto
 
[row, col] = size(M);
 
for i = 1:row
    for j = 1:col
        if (mod(M(i,j),4)==0)
            idx_bis(i,j) = logical(1);
        end
        if (mod(M(i,j),100)==0)
            if (mod(M(i,j),400)==0)
                idx_bis(i,j) = logical(1);
            else
                idx_bis(i,j) = logical(0);
            end
        end
    end
end
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