uses crt;
const n=10;
type mas=array[1..n] of real;
procedure sort(var a:mas;i1,ip:integer);
var i,j,id_max:integer;
max:real;
begin
j:=ip;
while j>i1 do
begin
max:=a[i1];
id_max:=i1;
for i:=i1+1 to j do
if a[i]>max then
begin
max:=a[i];
id_max:=i
end;
if id_max<ip then
begin
a[id_max]:=a[j];
a[j]:=max;
end;
j:=j-1
end;
end;
var
a:mas;
i:integer;
k:integer;
x:real;
j:integer;
begin
clrscr;
randomize;
writeln('Исходный массив');
for i:=1 to n do
begin
a[i]:=random(101) - 50;
write(a[i]:8:2);
end;
writeln;
k:=0;
for i:=1 to n do
if trunc(a[i])>1 then
begin
inc(k);
x:=a[i];
for j:=i downto k+1 do
a[j]:=a[j-1];
a[k]:=x;
end;
for i:=1 to n do
if a[i]>0 then k:=k+1;
Writeln('Кол-во элементов =',k);
writeln('Перестановка больших 1 вперед:');
for i:=1 to n do
write(a[i]:8:2);
writeln;
sort(a,1,k);
sort(a,k+1,n);
writeln('Сортировка частей по возрастанию');
for i:=1 to n do
write(a[i]:8:2);
readln
end.
Ну видимо так и есть, не надо к элементам за пределами массива обращаться )
В какой строке-то хоть?
И невозможно ж такой код читать, закинули б хотя бы сюда: https://pak.lebah.web.id/jcf.cgi
uses
crt;
const
n = 10;
type
mas = array[1..n] of real;
procedure sort(var a: mas; i1, ip: integer);
var
i, j, id_max: integer;
max: real;
begin
j := ip;
while j > i1 do
begin
max := a[i1];
id_max := i1;
for i := i1 + 1 to j do
if a[i] > max then
begin
max := a[i];
id_max := i;
end;
if id_max < ip then
begin
a[id_max] := a[j];
a[j] := max;
end;
j := j - 1;
end;
end;
var
a: mas;
i: integer;
k: integer;
x: real;
j: integer;
begin
clrscr;
randomize;
writeln('Исходный массив');
for i := 1 to n do
begin
a[i] := random(101) - 50;
write(a[i]: 8: 2);
end;
writeln;
k := 0;
for i := 1 to n do
if trunc(a[i]) > 1 then
begin
Inc(k);
x := a[i];
for j := i downto k + 1 do
a[j] := a[j - 1];
a[k] := x;
end;
for i := 1 to n do
if a[i] > 0 then
k := k + 1;
writeln('Кол-во элементов =', k);
writeln('Перестановка больших 1 вперед:');
for i := 1 to n do
write(a[i]: 8: 2);
writeln;
sort(a, 1, k);
sort(a, k + 1, n);
writeln('Сортировка частей по возрастанию');
for i := 1 to n do
write(a[i]: 8: 2);
readln;
end.
Строка 21
А что за задача, какой алгоритм сортировки?
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
Количество положительных элементов массива.
Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых превышает единицу, а потом – все остальные.Упорядочить каждую часть массива по возрастанию, используя алгоритм сортировки прямого выбора.
Что-то тут проще код ) https://ru.wikibooks.org/wiki/Реализации_алгоритмов/Сортировка/Выбором#Паскаль
Только надо заменить 1
в первом цикле и n
на соотв. параметры.