• Удалить из списка все узлы, до и после которых находятся узлы с информационными составляющими, являющимися числами Фибоначчи.

    Двунаправленный список.

Ответы 1

  • Средствами PascalABC.NET 3.2 эта задача решается очень просто.1. Короткое решение, оставляющее в недоумении: а для чего тут было использовать двусвязный список? ответ: потому что таково задание!// PascalABC.NET 3.2, сборка 1439 от 09.05.2017// Внимание! Если программа не работает, обновите версию!function IsFib(n:integer):boolean;begin  if (n=1) or (n=2) then Result:=true  else begin    Result:=false;    (var n1, var n2):=(1,2);    var Fib:integer;    repeat      Fib:=n1+n2;      if Fib=n then begin Result:=true; break end;      (n2,n1):=(Fib,n2)    until Fib>n    end;end;begin  var L:=ReadSeqInteger('->',ReadInteger('n=')).ToLinkedList;  L:=L.Where(x->not IsFib(x)).ToLinkedList;  L.Printlnend.Примерn= 9-> 3 17 13 10 12 4 11 0 517 10 12 4 11 02. Несколько более длинное решение для желающих немного порулить удалением узлов.Функция остается той же, а изменения делаются в главной программе.begin  var L:=ReadSeqInteger('->',ReadInteger('n=')).ToLinkedList;  var a:=L.Where(x->IsFib(x)).ToArray; // список значений для удаления  foreach var t in a do L.Remove(t); // собственно удаление узлов  L.Printlnend.3. Бонус. Как это сделать без двусвязного списка (опять же, основная программа).begin  var a:=ReadSeqInteger('->',ReadInteger('n='))      .Where(x->not IsFib(x)).ToArray;  a.Printlnend.
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years