Нужно найти размер и время передачи файлов (смотрите фото). наиболее желательно с подробным решением, т.к. я не шарю в этих всех переводах величин в информатике.
Средствами 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.
Чтобы найти объём нужно скорость умножить на время.
Скорость 1 = 3 * 1024 * 8 = 24576 бит/с
скорость 2 = 512 * 8 = 4096 бит/с
Объёмы равны, следовательно.
V1/t1 = V2/t2
А объём первого равен 24576 * 10 = 245760 бит = 30 Кбайт
t2 = 245760 / 4096 = 60 сек = 1 мин
ответ: t2 = 1 мин, объём первого равен 30 Кбайт