{
Пример 4.4. Числа Фибоначчи { F[i] } определяются по формулам
F[0] = F[1] = 1; F[i] = F[i-1] + F[i-2] при i = 1, 2, 3, ...
(каждое очередное число равно сумме двух предыдущих).
Вычислить сумму всех чисел Фибоначчи, которые не превосходят
заданного натурального числа М.
Система тестов
╔═══════╤════════╤════════════════════════════════╗
║ Номер │ Данные │ Результат ║
║ теста │ │ ║
╟───────┼────────┼────────────────────────────────╢
║ 1 │ M = 10 │ S = 1 + 1 + 2 + 3 + 5 + 8 = 20 ║
╟───────┼────────┼────────────────────────────────╢
║ 2 │ M = 1 │ S = 1 + 1 = 2 ║
╚═══════╧════════╧════════════════════════════════╝
}
Program SummaFib;
Uses Crt;
Var M, { заданное число }
F0, F1, F2, { три последовательных числа Фибоначчи}
S : Integer; { сумма чисел Фибоначчи}
BEGIN
ClrScr;
Write('Введите натуральное М : ');
ReadLn(M);
F0:=1; F1:=1; F2:=2;
S:=4; {4 - сумма первых трех чисел Фибоначчи}
Write('Числа Фибоначчи, не превосходящие ', M, ' :', F0:4, F1:4);
While F2<=M do
begin
F0:=F1; F1:=F2; Write(F1 : 4);
F2:=F0+F1; S:=S+F2;
end;
S:=S - F2; {вычитание из суммы последнего числа, которое превосходит М}
WriteLn; WriteLn;
WriteLn('О т в е т : Сумма этих чисел равна ', S); ReadLn
END.