• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

поиск чисел Фибоначчи в массиве

  • Автор темы Guest
  • Дата начала
G

Guest

Переменной T присвоить значение true, если среди элементов массива х есть хотя бы одно число Фибоначчи, и значение false иначе
Pascal

Код:
uses crt;

function fib(k:byte):real;
begin
if (k=1) then begin fib:=0;exit;end;
if (k=2) then begin fib:=1;exit;end;

fib:=fib(k-1)+fib(k-2);
end;


const n=10;

var x:array[1..n] of integer;
i,k:byte;
t:boolean;
begin
clrscr;
writeln('введите ',n,' элементов массива');
for i:=1 to n do
read(x[i]);
readln;
t:=false;
for i:=1 to n do
if x[i]=fib(k) then
begin
t:=true;

end;
writeln(t);
readln
end.

помогите, разлобраться. Вот что есть уже.
 
N

nayke

во первых советую числа фибоначи определить в массиве вначале а не определять число рекусивно для каждого x.
например
Код:
fib: array[1..20] of integer;
fib[1]:=1;
fib[2]:=2;
for i:=3 to 20 do
fib[i]:=fib[i-1]+fib[i-2];

ну а сравнить есть ли число в массиве можно как
Код:
for i:=1 to n do
begin
for j:=1 to 20 do
if x[i]=fib[j] then begin t:=true;break;end;
if t then break;
end;

так как последовательность фибоначи будет отсортирована то можно всячески оптимизировать алгоритм, например используя дихотомический поиск, но для лабы с маленькими значениями и так пойдет.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!