Дан одномерный массив. Удалить из массива все числа Фибоначчи. язык c++ или паскаль
// PascalABC.NET 3.0, сборка 1088
const
nn=100;
var
a:array[1..nn] of integer;
i,n,k,max,f2,f1,fib:integer;
begin
Write(Введите количество элементов в массиве (1-100): );
Read(n);
Randomize;
Writeln(*** Сформированный массив ***);
max:=0;
for i:=1 to n do begin
a[i]:=Random(100)+1;
Write(a[i], );
if max end;
Writeln;
// Заменяем элементы, равные числам Фибоначчи, на -1
k:=0;
f1:=1; fib:=1;
while fib<=max do begin
for i:=1 to n do
if a[i]=fib then begin a[i]:=-1; Inc(k) end;
f2:=f1; f1:=fib; fib:=f1+f2
end;
if k>0 then begin
// Удаляем элементы, равные -1
Writeln(*** Результирующий массив ***);
for i:=n downto 1 do begin
if a[i]=-1 then begin
if i<>n then
for k:=i to n-1 do a[k]:=a[k+1];
Dec(n);
end;
end;
for i:=1 to n do Write(a[i], );
Writeln
end
else Writeln(Числа Фибоначчи не обнаружены)
end.
Тестовое решение:
Введите количество элементов в массиве (1-100): 20
*** Сформированный массив ***
21 51 15 38 52 35 42 51 16 53 96 3 53 82 87 12 55 37 93 19
*** Результирующий массив ***
51 15 38 52 35 42 51 16 53 96 53 82 87 12 37 93 19