Дан целочисленный массив с количеством элементов n. Напечатать те его элементы, индексы которых являются степенями двойки (1, 2, 4, 8, 16, …) — Pascal(Паскаль)

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.

Leave a Comment

+ 36 = 43