var
a: array [1..20] of integer;
i: byte;
function step2(i: byte): word;
var
a: word;
j: byte;
begin
a := 1;
for j := 1 to i do
a := a * 2;
step2 := a
end;
begin
randomize;
for i := 1 to 20 do
begin
a[i] := random(100);
write(a[i],' ')
end;
writeln;
for i := 1 to 4 do
write(a[step2(i)],' ');
readln
end.
Вариант 2
function stepen_dvoiki(i : integer) : boolean;
var
j:real;
begin
stepen_dvoiki:=false;
j:=i;
while (frac(j)=0) do begin
j:=j/2;
if j=2 then stepen_dvoiki:=true;
end;
if (i=2) or (i=1) then stepen_dvoiki:=true;
end;
const n=10;
var
i : integer;
a : array [1..n] of integer;
begin
for i:=1 to n do begin
readln(a[i]);
end;
for i:=1 to n do begin
if stepen_dvoiki(i)=true then writeln(a[i]);
end;
readln;
end.
Вариант 3
uses crt;
var a:array[1..100] of integer;
n,i,j,p:integer;
begin
clrscr;
randomize;
write('n=');
readln(n);
writeln('Массив:');
for i:=1 to n do
begin
a[i]:=random(100);
write(a[i],' ');
end;
writeln;
writeln;
writeln('Элементы с индексами-степенями 2:');
for i:=2 to n do
begin
p:=1;
while p<i do
p:=p*2;
if p=i then write(a[i],' ');
end;
readln
end.