коментарий к телу программы

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
_ROBERT_
Сообщения: 4
Зарегистрирован: 24 окт 2012, 19:23

04 июн 2013, 20:09

помогите пожалуйста
(задача Дан целочисленный массив A из N элементов (0<N<100;0<A<100). Определить те его элементы, индексы которых являются степенями двойки (1,2,4,8,16, ...).)

Код: Выделить всё

uses crt;
const nmax=99;
var a:array[1..nmax] of integer;
    n,i:integer;
begin
clrscr;
randomize;
repeat
write('Размер массива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Исходный массив:');
for i:=1 to n do
 begin
  a[i]:=random(99)+1;
  write(a[i]:4);
 end;
writeln;
writeln('Элементы, чьи индексы есть степени числа 2:');
i:=1;
while i<=n do
 begin
  write(a[i]:4);
  i:=i*2;
 end;
readln
end.
Paymer-Soft-COM
Сообщения: 1
Зарегистрирован: 01 дек 2013, 02:47
Откуда: Москва
Контактная информация:

01 дек 2013, 03:14

Нужна глобальная переменная типа set of byte и при инициализации модуля заполняешь ее значениями полученными в результате сдвига 1 вправо на 0..31 (for i:=0 to 31 do Include(ByteSet, 1 shl i)), ну а в самой процедуре поиска уже проверяешь на на нахождения значения каждого элемента массива в этом ByteSet (if arr in ByteSet then УРЯ!).
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

03 дек 2013, 11:22

Нужна глобальная переменная типа set of byte и при инициализации модуля заполняешь ее значениями полученными в результате сдвига 1 вправо на 0..31 (for i:=0 to 31 do Include(ByteSet, 1 shl i)), ну а в самой процедуре поиска уже проверяешь на на нахождения значения каждого элемента массива в этом ByteSet (if arr in ByteSet then УРЯ!).

А зачем? В результате имеем для каждого элемента проверку вхождения, когда в задании требуется определить элементы, чьи индексы...
Эти индексы и так известны заранее. Двигаем переменную, скажем X = 1, влево на 1, пока результат не станет больше N и попутно выводим элементы arr[x] - вот и все. У ТС, кстати, примерно так же и написано.
It's a long way to the top if you wanna rock'n'roll
Ответить