kisa-luba
?>

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

Информатика

Ответы

girra
// 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
Жуков219

int RowWithMax(double m[n][n], int j)

{

   double max_el = m[j][j];

   int max_i = j;

   for (int i = j; i < n; i++)

   {

       if (abs(m[i][j]) > abs(max_el))

       {

           max_el = m[i][j];

           max_i = i;

       }

   }

   return max_i;

}

 

void RowChange(double m[n][n], double f[n], int i1, int i2)

{

   for (int j = 0; j < n; j++)

   {

       /*m[i1][j] = m[i1][j] + m[i2][j];

       m[i2][j] = m[i1][j] - m[i2][j];

       m[i1][j] = m[i1][j] - m[i2][j];*/

       swap(m[i1][j], m[i2][j]);

   }

   

   swap(f[i1], f[i2]);

}

 

double StraightRun(double m[n][n], double f[n], int i) //прямой метод

{

   double el;

   double det = 1;

   int reverse = 0;

 

   int max_i = RowWithMax(m, i);

   if (i != max_i)

   {

       RowChange(m, f, i, max_i);

       //reverse++;

       det *= (-1);

   }

   el = m[i][i];

   det *= el;

   f[i] /= el;

   for (int i1 = n - 1; i1 >= i; i1--)

   {

       m[i][i1] /= el;

   }

   for (int i2 = i + 1; i2 < n; i2++)

   {

       el = m[i2][i];

       f[i2] -= f[i] * el;

       for (int j = n - 1; j >= i; j--)

       {

           m[i2][j] -= el * m[i][j];

       }

   }

 

 

   return det/**pow(-1, reverse)*/;

 

}

strelnikov-aa

ответ: [35;40]

Объяснение:

Логическое ИЛИ истинно, если истинно хотя бы одно утверждение.

Введем обозначения:

 

(x ∈А) ≡ A; (x ∈ P) ≡ P; (x ∈ Q) ≡ Q; (x ∈ R) ≡ R.

 

Применив преобразование импликации, получаем:

 

¬P∨Q∨¬A∨R

 

¬P∨Q∨R истинно тогда, когда x∈(– ∞,15);(25,∞). Выражение ¬A должно быть истинно на интервале [15;25]. Поскольку все выражение должно быть истинно для ЛЮБОГО x, следовательно, выражение A должно быть истинно на промежутке, не включающем отрезок [15;25].

 

Из всех отрезков только отрезок [35;40] удовлетворяет этому условию.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Дан одномерный массив. удалить из массива все числа фибоначчи. язык c++ или паскаль
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Chernaya
Картузов-Алексей1252
Сергеевна-С.А.1549
ivanov568
nataliaterekhovasinger2
lezzzzka5510
evageniy79
Марина1101
Pavlovna-Golovitinskaya378
TrofimovAnastasiya828
ramco1972
mixtabak2
katrin50
mekap22044
sv455umarketing74