Во-первых хотелось бы узнать, почему у тебя в 24 строчке странная запись:
if (P else F:=false;
Здесь непонятно, к чему написана скобка, а также непонятно, куда затерялся синтаксический then.
Во-вторых - почему в той же строчке сравниваешь тип real с типом boolean? На это ругается даже компилятор.
В-третьих - если мы опустим эти недочёты и вникнем в алгоритм, то поймём, что ты зациклил условие проверки P на истинность до тех пор, пока i не будет больше n или пока F не станет ложью. Но тут подвох в чём? В этом цикле ты не производишь никаких действий над операторами в условии, кроме как присваивание булевой переменной F значение false, чему оно и равно изначально. То есть можно сказать, что у тебя здесь происходит бесконечное зацикливание. Скорее всего именно поэтому у тебя не выводится массив, потому что компилятор не в состоянии дойти до строчки вывода. Чтобы хотя бы часть условия выполнилась, тебе нужно в условии if..then..else присваивать F не false, а true. Но это только в том случае, если ты исправишь конструкцию условия.
Во-первых хотелось бы узнать, почему у тебя в 24 строчке странная запись:
if (P else F:=false;
Здесь непонятно, к чему написана скобка, а также непонятно, куда затерялся синтаксический then.
Во-вторых - почему в той же строчке сравниваешь тип real с типом boolean? На это ругается даже компилятор.
В-третьих - если мы опустим эти недочёты и вникнем в алгоритм, то поймём, что ты зациклил условие проверки P на истинность до тех пор, пока i не будет больше n или пока F не станет ложью. Но тут подвох в чём? В этом цикле ты не производишь никаких действий над операторами в условии, кроме как присваивание булевой переменной F значение false, чему оно и равно изначально. То есть можно сказать, что у тебя здесь происходит бесконечное зацикливание. Скорее всего именно поэтому у тебя не выводится массив, потому что компилятор не в состоянии дойти до строчки вывода. Чтобы хотя бы часть условия выполнилась, тебе нужно в условии if..then..else присваивать F не false, а true. Но это только в том случае, если ты исправишь конструкцию условия.
const n=10;
var a:array [1..n] of real;
i,j,k:integer;
s,v:real;
begin
write(' Исходный массив: ');
for i:=1 to n do
begin
a[i]:=random*20-10;
write(a[i]:7:2);
if a[i]<0 then
begin
s:=s+a[i]*a[i];
k:=k+1
end;
if a[i]>0 then a[i]:=i
end;
writeln;
write('Преобразованый массив: ');
for i:=1 to n do write(a[i]:7:2);
writeln;
for i:=1 to n do
for j:=1 to n-i do
if a[j]>a[j+1] then
begin
v:=a[j];
a[j]:=a[j+1];
a[j+1]:=v
end;
write('Отсортированый массив: ');
for i:=1 to n do write(a[i]:7:2);
writeln;
writeln('Среднее арифметическое квадратов отрицательных чисел равно ',s/k:0:2);
end.