
METER EN UN VECTOR Nº POSICIONES DE NUMEROS DE OTRO VECTOR
Publicado por Javier (16 intervenciones) el 11/02/2017 12:24:00
Buenos días a todos:
Estoy haciendo el siguiente problema:
Se pide escribir una función que se llame mi_encuentra, que recibiendo como argumento de entrada un vector v de números enteros y número entero n, devuelva el número de veces m que se encuentra el número contenido en el vector y un vector w con las componentes donde se encuentra.
Ej:
v=[1 3 -1 5 3 ] ,n=3, mi_encuentra(v,n) debe devolver m=2,w= [2,5 ].
El programa que he realizado es el siguiente:
Y los resultados que me arroja cuando llamo a la función son los siguiente:
El resultado de "m" está bien pero el de "w" no.
¿Puede ayudarme alguien?
Gracias.
Estoy haciendo el siguiente problema:
Se pide escribir una función que se llame mi_encuentra, que recibiendo como argumento de entrada un vector v de números enteros y número entero n, devuelva el número de veces m que se encuentra el número contenido en el vector y un vector w con las componentes donde se encuentra.
Ej:
v=[1 3 -1 5 3 ] ,n=3, mi_encuentra(v,n) debe devolver m=2,w= [2,5 ].
El programa que he realizado es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function [m,w] = mi_encuentra(v,n)
l=5; %Guardamos la longitud del vector "v" en "l" (creo que esto deberia hacerlo de otra manera mejor)
f=[0 0 0 0 0]; %Definimos un vector de frecuencias (de la misma longitud que el vector "v").
%En el siguiente doble "FOR" creamos el vector de frecuencias
for i=1:l
for j=1:l
if (v(i)==v(j)) %Comparamos cada término "i"con todos los demás "j" del vector "v"
f(i)=f(i)+1; %Si son iguales aumentamos el termino correspondiente
%del vector de frecuencias en una unidad
end
end
end
%Metemos en "m" el nº de veces que se repite "n"
for i=1:l
if (v(i)==n) %Si el nº que buscamos "n" esta en algun lugar del vector "v"
m=f(i); %Metemos las veces que se repite dicho nº en "m" (A traves del vector de frecuencias)
end
end
%Buscamos la posicion/es donde se encuentra el nº "n" que buscamos
for i=1:l
if (v(i)==n) %Si el nº buscado es igual al que esta en la posicion "v(i)"
w=i; %Lo meto en el vector "w"
end
end
Y los resultados que me arroja cuando llamo a la función son los siguiente:
1
2
3
4
5
6
7
8
9
10
>> [m,w] = mi_encuentra(v,n)
m =
2
w =
5
El resultado de "m" está bien pero el de "w" no.
¿Puede ayudarme alguien?
Gracias.
Valora esta pregunta


0