IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Функция, функция
Lesnik
сообщение 13.12.2006 21:43
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


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

Код

program ggg;
uses crt;
var
mas:array[1..30000] of integer;
i,index:integer;
begin
clrscr;
Writeln('Vvedite koli4estvo 4isel');
Readln(n);
randomize;
for i:=1 to n do
  begin
  mas[i]:=random(99);
  writeln(mas[i],' ');
  end;
index:=2;
writeln;
writeln('Vivod');
for i:=1 to n do
  begin
  if(i=index) then
    begin
    index:=index*2;
    writeln(i,' = ',mas[i]);
    end;
  end;
readln;
end.


Как это можно сделать через функцию?

Пытался передалать, получилось вот это:
Код

program COK;
uses crt;
type
mas=array[1..30000]of integer;
var
a:mas;
i,n:integer;
   Function f(c:mas):integer;
   var
   index,i1:integer;
   begin
   index:=2;
   for i1:=1 to n do
   begin
   If i=index then
      begin
      index:=index*2;
      writeln(index);
      end;
   end;
end;
begin
clrscr;
Writeln('Vvedite koli4estvo');
readln(n);
For i:=1 to n do
    begin
    a[i]:=random(99);
    end;
f(a);
end.

Но не работает, помогите отредактировать.
Спасибо.

Сообщение отредактировано: Lesnik - 13.12.2006 21:51
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
klem4
сообщение 16.12.2006 16:43
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Функция возвращает true если ее входной параметр X - степень двойки:

function IsTwoPower(X: LongInt): Boolean;
var
i, count: Byte;
begin

i := 0; count := 0;

while (i < 32) and (count < 2) do begin
if ((X shl i) shr 31) = 1 then inc(count);
inc(i);
end;

IsTwoPower := (count = 1);

end;


Кстати единица - тоже степень двойки ...


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 16.12.2006 16:58
Сообщение #3


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Цитата(klem4 @ 16.12.2006 16:43) *

Кстати единица - тоже степень двойки ...

см. сообщения 8-9

...а зачем здесь вообще эта ф-ция? предлагаете делать так:
 for i:=1 to n do
if (i - степень двойки) then
write(ar[i]);


?
что-то не поняла замысел.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Lesnik   Функция   13.12.2006 21:43
мисс_граффити   Function f(const c:mas):integer; вот... иначе пе...   13.12.2006 22:08
Lesnik   Function f(const c:mas):integer; вот... иначе п...   13.12.2006 22:15
мисс_граффити   :blink: program COK; uses crt; type mas=array[1.....   13.12.2006 22:17
Lesnik   Не работает :( Программа просит ввести количество ...   13.12.2006 22:54
мисс_граффити   так я и не обещала, что будет работать правильно. ...   13.12.2006 23:17
Lesnik   а отлаживай уж ты сам... В том и дело, что я н...   13.12.2006 23:38
мисс_граффити   а что ты хочешь получить в итоге? я бы сказала, чт...   13.12.2006 23:45
Lesnik   а что ты хочешь получить в итоге? я бы сказала, ч...   13.12.2006 23:51
мисс_граффити   я же тебе сказала: исправь If i=index then там i1 ...   13.12.2006 23:54
Lesnik   я же тебе сказала: исправь If i=index then там i1...   14.12.2006 0:02
мисс_граффити   ну так... относительно нормально. :dry: но лишь ...   14.12.2006 0:07
Lesnik   Если не тяжело, можете ещё посмотреть задачу? Сдел...   14.12.2006 0:29
мисс_граффити   такая маленькая матрица переполнение стека не вызо...   14.12.2006 10:09
Lesnik   Вот то, что пока получается. Начальную матрица стр...   15.12.2006 10:50
мисс_граффити   ты вообще не читаешь, что я тебе пишу? Procedure P...   16.12.2006 16:24
klem4   Функция возвращает true если ее входной параметр X...   16.12.2006 16:43
мисс_граффити   Кстати единица - тоже степень двойки ... см. соо...   16.12.2006 16:58
volvo   :blink: Вообще-то эта функция пишется в одну стро...   16.12.2006 16:50
klem4   Замысел не понял я :) Мало того что в faq не посмо...   16.12.2006 17:08


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 17:27
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"