Matlab - Todos los números son positivos o pares

 
Vista:
Imágen de perfil de Raúl
Val: 5
Ha disminuido su posición en 6 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Todos los números son positivos o pares

Publicado por Raúl (2 intervenciones) el 17/04/2021 11:30:41
Hola! estoy empezando a programar y siendo sinceros no tengo ni idea mi duda supongo que es simple pero yo no consigo hacer funcionar el programa y el problema es el siguiente.

Tengo un vector, el cual quiero saber si todos los números son positivos o si todos son pares, también quiero poner un 'disp' para cuando no sea ni uno ni el otro, pero no se como hacerlo, como interactuar con 3 'disp' distintos y combinar estas 3 funciones.

Si alguien me puede tirar una mano, seria de gran 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 Jon
Val: 354
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Todos los números son positivos o pares

Publicado por Jon (161 intervenciones) el 19/04/2021 10:47:29
Buenos días Raúl,

No te preocupes por no saber al principio, todos hemos empezado igual. Además, esta comunidad y otras muchas páginas están para ayudar.

Aquí te dejo mi solución con varios comentarios. Si necesitas algo más, pregunta sin problemas.

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
27
28
29
30
31
32
33
34
35
36
%% Insertar vector deseado
V = -2:2:10;
 
%% Comprobar los datos del vector
% Se generan vectores lógicos "Pos" y "Par" en cada caso
for i = 1 : length(V)
    if (V(i) >= 0)
        Pos(i) = logical(1);
    else
        Pos(i) = logical(0);
    end
 
    if (mod(V(i),2)==0)         % (*)
        Par(i) = logical(1);
    else
        Par(i) = logical(0);
    end
end
% (*) La función "mod" devuelve el resto después de la división.
% Por ello, si el número se divide entre 2 y el resto es 0, quiere decir
% que el número es par.
 
%% Mostrar mensajes al usuario
% Se muestra el mensaje si todos los elementos del vector "Pos" son 1
if (Pos)
    fprintf('Todos los números del vector son POSITIVOS\n\n');
end
% Se muestra el mensaje si todos los elementos del vector "Pos" son 1
if (Par)
    fprintf('Todos los números del vector son PARES\n\n');
end
% Se muestra el mensaje si todos los elementos del vector "Pos" y "Par"
% no son 1
if ~(Pos & Par)
    fprintf('Todos los números del vector no son POSITIVOS ni PARES\n\n');
end

Un saludo,

Jon
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
Imágen de perfil de Raúl
Val: 5
Ha disminuido su posición en 6 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Todos los números son positivos o pares

Publicado por Raúl (2 intervenciones) el 19/04/2021 20:15:01
Gracias Jon!

Espectacular trabajo ;) tengo uno parecido que conseguí sacarlo a base de romperme la cabeza.

Ahora estoy con uno un poco mas complejo, a ver si me puedes echar una mano, lo que necesito es que en el vector haya un numero y que los demás números del vector sean el doble, por ejemplo v=(2,4,4).

Estoy intentándolo con dos bucles for, pero me da error, aquí te dejo mi código para ver si puedes aconsejarme.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
a=[2,4,4];
positivos=vector(a);
function positivos=vector(v)
    positivos=1;
    n=length(v);
   for i=1:1:n
       for j=1:1:n
              if v(j)~=v(i)*2
                positivos=0;
              end
       end
   end
 
   if positivos ==1
           disp('Iguales')
       else
           disp('distinto')
   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
Imágen de perfil de Jon
Val: 354
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Todos los números son positivos o pares

Publicado por Jon (161 intervenciones) el 20/04/2021 09:14:24
Buenos días Raúl,

Después de darle unas vueltas, creo que he conseguido la solución.

Aquí te dejo la solución:

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
27
28
29
30
31
32
33
34
35
%% Insertar vector deseado
V = [2,4,4];
 
%% Programa
i_array = 1:length(V);
% Bucle For de N elementos
for i = i_array
    % Seleccionar elemento del vector
    NumBase = V(i);
 
    % Quitar número a analizar (NumBase) para segundo bucle
    idx = find(i_array == i);
    j_array = i_array;
    j_array(idx) = [];
 
    % Bucle For de N-1 elementos
    k = 1;
    for j = j_array
        if (V(j)/NumBase == 2)
            Doble(k) = logical(1);
        else
            Doble(k) = logical(0);
        end
        k = k + 1;
    end
 
    % Crear string array con resultados y mostrar mensaje
    if (Doble)
        Doble_str(i) = "YES";
        fprintf('El elemento Nº%d del vector V es la MITAD del resto de elementos\n\n',i);
    else
        Doble_str(i) = "NO";
    end
end
disp(Doble_str);

Si tienes cualquier duda, no dudes en contactar conmigo.

Un saludo,

Jon
[email protected]
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