Как я раньше сказал, типы данных можно приводить. Вот другой вариант кода (тоже работает).
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Unit1;
var
n,i: integer;
a: array[1..100] of real;
k: real;
begin
writeln('Input n ');
readln(n);
writeln('Input Array');
for i := 1 to n do readln(a[i]);
Array_out(n, Real_array(a));
Sort_array(n, Real_array(a));
Array_out(n, Real_array(a));
readln;
end.
Но зачем использовать эти все приведения типов, когда проще и лучше объявить всё, что нужно имеющегося типа. Поэтому первый вариант мне нравиться больше.