В n будем хранить количество чисел, которые ещё нужно вывести. a и b - предыдущее и текущее числа Фибоначчи. По определению, следующее число Фибоначчи равно сумме двух предыдущих, так что новое значение b будет a + b. Чтобы не заводить новую временную переменную, новое значение a можно будет найти, вычитая из нового b старое a, получится (a + b) - a = b.
Код процедуры:
procedure print_fib(n: integer);
var a, b, t: integer;
begin
a := 0;
b := 1;
while n > 0 do
begin
write(b, ' ');
b := a + b;
a := b - a;
n := n - 1;
end;
end;
Пример основной программы:
begin
print_fib(10)
end.
Вывод:
1 1 2 3 5 8 13 21 34 55
uses drawman;
Procedure w;
Begin
PenDown;
OnVector (0,-7);
OnVector (2,0);
OnVector (0,7);
PenUp;
OnVector (0,-7) ;
PenDown;
OnVector (2,0);
OnVector (0,7);
PenUp;
end;
procedure T;
Begin
PenDown;
OnVector (0,7);
OnVector (-2,0);
OnVector(4,0); penUp;
end;
procedure O;
Begin
PenDown;
OnVector (4,0);
OnVector (0,7);
OnVector (-4,0);
OnVector (0,-7);
PenUp;
end;
procedure R;
PenDown;
OnVector (0,7);
OnVector (4,0);
OnVector (0,-4);
OnVector (-4,0);
PenUp;
end;
procedure A;
begin
PenDown;
OnVector (2,7);
OnVector (2,-7);
PenUp;
OnVector (-3,3);
PenDown;
OnVector (2,0);
PenUp;
end;
begin
Field (32,10);
ToPoint (3,7); w;
OnVector (4,-7); T;
OnVector (2,-7); O;
OnVector (6,0); R;
OnVector (5,-3); A;
end.
Вроде работает
Поделитесь своими знаниями, ответьте на вопрос:
1) + 1001 2)1100111 + 1101 3)100111 + 111000 4) 1101011 + 10011 5) 101101 - 1011 6) 111011 - 111 7) cd66(16) = x(8) 8) 5723(8) = x(16) 9) 7b7, 93(16) = x(8) 10) 65431(8) = x(16) 11) 10001, 01(2) = x(10) 12) 837(10) = x(8) 13 3e, 5(16) = x10 решите
1)+1001=112112
2)1100111+1101=1101212
3)100111+111000=2
4)1101011+10011=022
5)101101-1011=100090
6)111011-111=110900