Examen Dic 2021 ej 4c

Examen Dic 2021 ej 4c

de Margaret Wyaux Yewdiukow -
Número de respuestas: 2

Buen día,

Este ejercicio lo pensé con un while y un for, quisiera saber si se toma como correcto. Gracias

function res=nmayores(v,n) 
   largo=length(v);
   limite=largo-n;
   aux=v(1:largo);
   contador=0;
     while contador ~= limite
        aux=reemplazarMin(aux,0);
        contador=contador+1;
     endwhile
        res=[ ];
          for i=1:largo
            if aux(i) ~= 0
                res=[res,aux(i)];
            endif
          endfor
endfunction 

En respuesta a Margaret Wyaux Yewdiukow

Re: Examen Dic 2021 ej 4c

de Ernesto Dufrechou -
Hola Margaret,
tu idea no es correcta. reemplazarMin cambia el mínimo del vector por x solo si x es mayor que el mínimo. Por ejemplo, si todos los elementos de v son positivos, el primer while no hace nada, y el for siguiente agrega todos los elementos del vector aux (que es igual a v).
Por esta razón no podés usar el 0 (ni ningún número) para marcar los n mayores.
La forma correcta de resolverlo es recorrer todo el vector v con un for, agregando los elementos al resultado mientras haya menos que n, y luego reemplazando el mínimo del resultado cuando encontrás algún elemento de v mayor que dicho mínimo (usando reemplazarMin).
Saludos!