1) во второй строке Begin не нужен - тело программы начинается не здесь
2) не описан массив x1, и где он используется, непонятно.
наверно, можно было бы его описать как-то так в секции var:
x1 :array[1..32] of integer = (
1, 2, 4, 7, 2, 5, 9, 3,
1, 2, 4, 7, 2, 5, 9, 3,
1, 2, 4, 7, 2, 5, 9, 3,
1, 2, 4, 7, 2, 5, 9, 3
);
или вообще сделать массивом констант:
const
x1 :array[1..32] of integer = (
1, 2, 4, 7, 2, 5, 9, 3,
1, 2, 4, 7, 2, 5, 9, 3,
1, 2, 4, 7, 2, 5, 9, 3,
1, 2, 4, 7, 2, 5, 9, 3
);
3) также не описаны переменные x и nn, использующиеся в программе.
Begin
ВОТ ТУТ ОШИБКА НАЧИНАЕТСЯ И ПИШЕТ ОШИБКА НЕИЗВЕСТНЫЙ ИДЕНТИФИКАТОР .
>>> x1[1]:=1; x1[2]:=2; x1[3]:=4; x1[4]:=7;
x1[5]:=2; x1[6]:=5; x1[7]:=9; x1[8]:=3;
x1[9]:=1; x1[10]:=2; x1[11]:=4; x1[12]:=7;
x1[13]:=2; x1[14]:=5; x1[15]:=9; x1[16]:=3;
x1[17]:=1; x1[18]:=2; x1[19]:=4; x1[20]:=7;
x1[21]:=2; x1[22]:=5; x1[23]:=9; x1[24]:=3;
x1[25]:=1; x1[26]:=2; x1[27]:=4; x1[28]:=7;
x1[29]:=2; x1[30]:=5; x1[31]:=9; x1[32]:=3;
{N – кол-во отсчетов}
end;
{Процедура вычисления двоично-инверсных индексов}
procedure DvInvInx(n,k:integer;var n1:integer);
var
b,ost,i,m:integer;
begin
b:=trunc(ln(k)/ln(2));
m:=n; n1:=0;
for i:=0 to b-1 do
begin
ost:=m mod 2;
n1:=ost+n1*2;
m:=m div 2;
end;
end;
{Процедура перестановки отсчетов по полном прореживании сигнала}
procedure Perstanov(Var x:array1; n:integer);
Var
i,j: integer;
v:integer;
Begin
For i:=1 to n do
Begin
DvInvInx(i-1,n,j);
If i>j then
begin
v:=x[i];
x[i]:=x[j+1];
x[j+1]:=v;
end;
End;
End;
{Основная программа расчета}
begin
model(x,nn);
writeln;
writeln('Исходные отсчеты сигнала');
For i:=1 to nn do
begin
write(' ',x[i]:3);
end;
Perstanov(x,nn);
writeln;
writeln('Отсчеты сигнала после прореживания');
For i:=1 to nn do
begin
write(' ',x[i]:3);
end;
end.