{$mode objfpc}{$H-}{$R+}{$T+}{$Q+}{$V+}{$D+}{$X-}{$warnings on}
program ordena_array;
 
const
    TamanioVector = 4;
type
    TipoVector = array[1..TamanioVector] of real;

function posicion_minimo( vector: TipoVector; desde: integer ): integer; 
var
    i, pos_min : integer;
    minimo : real;
begin
    minimo := vector[desde];
    pos_min := desde;
    for i :=  (desde+1)  to TamanioVector do begin
        if vector[i] < minimo then begin
            minimo := vector[i];
            pos_min := i;

        end;
    end;
    result := pos_min;
end;

procedure permuta( var vector: TipoVector; i, j: integer);
var
    aux : real;
begin
    
    aux := vector[i];
    vector[i] := vector[j];
    vector[j] := aux
end;

procedure escribe_vector(vector:TipoVector);
var 
    i : integer;
begin
    for i := 1 to TamanioVector do begin
        write(vector[i]:0:1, ' ');
    end;
    writeln;

end;

procedure ordena(var vector:TipoVector);
var 
    pos_min, i : integer;
begin
    for i:= 1 to TamanioVector - 1 do begin
        pos_min := posicion_minimo(vector, i);
        permuta(vector, i, pos_min);
    end
end;

// Cuerpo principal
var
    vector_prueba: TipoVector = (70.0, 87.4, 91.3 , 86.2);
begin
    escribe_vector(vector_prueba);
    ordena(vector_prueba);
    escribe_vector(vector_prueba)
end.
