5. В каждой группе соедините линиями множество него подмножества, Обведите подмножества, Страны Яблоки Столиць Города Персики Сады Вокзаль Плодь Крылья Знаки препинания Птицыі Стан Точки Запятые Гуси Двоеточня
Средствами 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.Println end.
2. Несколько более длинное решение для желающих немного порулить удалением узлов.
Функция остается той же, а изменения делаются в главной программе.
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.Println end.
3. Бонус. Как это сделать без двусвязного списка (опять же, основная программа).
begin var a:=ReadSeqInteger('->',ReadInteger('n=')) .Where(x->not IsFib(x)).ToArray; a.Println end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку