М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Lina905
Lina905
17.05.2020 03:52 •  Информатика

Дан одномерный массив. удалить из массива все числа фибоначчи. язык c++ или паскаль

👇
Ответ:
жук234
жук234
17.05.2020
// 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<a[i] then max:=a[i]
    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
4,4(13 оценок)
Открыть все ответы
Ответ:
NanaxD
NanaxD
17.05.2020
Это в том случае, когда нужно, чтобы компьютер сам выдавал рандомные числа:

var
a:array [1..100] of integer;
i: integer;
begin
for i:=1 to 100 do    begin
a[i]:=random (100)-50;
if (a[i] mod 3=0)and(a[i] mod 6<>0) then 
write(a[i]);     end;
end.

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

var
a:array [1..100] of integer;
i, n: integer;
begin
read(n); - здесь вводим кол-во чисел.
for i:=1 to n do    begin
read(a[i]); - вводим числа с клавиатуры.
if (a[i] mod 3=0)and(a[i] mod 6<>0) then 
write(a[i], ' ');     end;
end.
4,4(69 оценок)
Ответ:
dimadenisen
dimadenisen
17.05.2020
1) Решение с рекурсии.
Программа проста в понимании, но неэффективна при больших значениях
function f(i: integer): longint;
begin
  if i < 2 then
    f := 1
  else
    f := f(i - 1) + f(i - 2);
end;

begin
  writeln('f(10) = ', f(10));
  writeln('f(25) = ', f(25));
  writeln('f(40) = ', f(40));
end.
2) Решение с динамического программирования. Вычисляет намного быстрее, чем решение с рекурсией.
var
  i: integer;
  f: array[0..40] of longint;
begin
  f[0] := 1;
  f[1] := 1;
  for i := 2 to 40 do
    f[i] := f[i - 1] + f[i - 2];
  writeln('f(10) = ', f[10]);
  writeln('f(25) = ', f[25]);
  writeln('f(40) = ', f[40]);
end.
3) Решение с моделирования. Использует меньше памяти.
function f(i: integer): longint;
var
  a, b: longint;
  j: integer;
begin
  if i < 2 then
    f := 1
  else
  begin
    a := 0;
    b := 1;
    for j := 0 to i do
    begin
      b := a + b;
      a := b - a;
    end;
    f := a;
  end;
end;

begin
  writeln('f(10) = ', f(10));
  writeln('f(25) = ', f(25));
  writeln('f(40) = ', f(40));
end.
4,7(4 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ