36 lines
838 B
Text
36 lines
838 B
Text
begin
|
|
integer function index(row, col);
|
|
integer row, col;
|
|
index := row * (row-1)/ 2 + col;
|
|
|
|
integer ROWS; ROWS := 15;
|
|
begin
|
|
decimal(11) array bell[0:ROWS*(ROWS+1)/2];
|
|
integer i, j;
|
|
|
|
bell[index(1, 0)] := 1.;
|
|
for i := 2 step 1 until ROWS do
|
|
begin
|
|
bell[index(i, 0)] := bell[index(i-1, i-2)];
|
|
for j := 1 step 1 until i-1 do
|
|
bell[index(i,j)] := bell[index(i,j-1)] + bell[index(i-1,j-1)];
|
|
end;
|
|
|
|
write("First fifteen Bell numbers:");
|
|
for i := 1 step 1 until ROWS do
|
|
begin
|
|
write(i);
|
|
writeon(": ");
|
|
writeon(bell[index(i,0)]);
|
|
end;
|
|
|
|
write("");
|
|
write("First ten rows of Bell's triangle:");
|
|
for i := 1 step 1 until 10 do
|
|
begin
|
|
write("");
|
|
for j := 0 step 1 until i-1 do
|
|
writeon(bell[index(i,j)]);
|
|
end;
|
|
end;
|
|
end
|