67 lines
2.5 KiB
Plaintext
67 lines
2.5 KiB
Plaintext
begin
|
|
% initialises m to an upper Pascal matrix of size n %
|
|
% the bounds of m must be at least 1 :: n, 1 :: n %
|
|
procedure upperPascalMatrix ( integer array m( *, * )
|
|
; integer value n
|
|
) ;
|
|
begin
|
|
for j := 1 until n do m( 1, j ) := 1;
|
|
for i := 2 until n do begin
|
|
m( i, 1 ) := 0;
|
|
for j := 2 until n do m( i, j ) := m( i - 1, j - 1 ) + m( i, j - 1 )
|
|
end for_i
|
|
end upperPascalMatrix ;
|
|
|
|
% initialises m to a lower Pascal matrix of size n %
|
|
% the bounds of m must be at least 1 :: n, 1 :: n %
|
|
procedure lowerPascalMatrix ( integer array m( *, * )
|
|
; integer value n
|
|
) ;
|
|
begin
|
|
for i := 1 until n do m( i, 1 ) := 1;
|
|
for j := 2 until n do begin
|
|
m( 1, j ) := 0;
|
|
for i := 2 until n do m( i, j ) := m( i - 1, j - 1 ) + m( i - 1, j )
|
|
end for_j
|
|
end lowerPascalMatrix ;
|
|
|
|
% initialises m to a symmetric Pascal matrix of size n %
|
|
% the bounds of m must be at least 1 :: n, 1 :: n %
|
|
procedure symmetricPascalMatrix ( integer array m( *, * )
|
|
; integer value n
|
|
) ;
|
|
begin
|
|
for i := 1 until n do begin
|
|
m( i, 1 ) := 1;
|
|
m( 1, i ) := 1
|
|
end for_i;
|
|
for j := 2 until n do for i := 2 until n do m( i, j ) := m( i, j - 1 ) + m( i - 1, j )
|
|
end symmetricPascalMatrix ;
|
|
|
|
begin % test the pascal matrix procedures %
|
|
|
|
% print the matrix m with the specified field width %
|
|
% the bounds of m must be at least 1 :: n, 1 :: n %
|
|
procedure printMatrix ( integer array m( *, * )
|
|
; integer value n
|
|
; integer value fieldWidth
|
|
) ;
|
|
begin
|
|
for i := 1 until n do begin
|
|
write( i_w := fieldWidth, s_w := 0, " ", m( i, 1 ) );
|
|
for j := 2 until n do writeon( i_w := fieldWidth, s_w := 0, " ", m( i, j ) )
|
|
end for_i
|
|
end printMatrix ;
|
|
|
|
integer array m( 1 :: 10, 1 :: 10 );
|
|
integer n, w;
|
|
|
|
n := 5; w := 2;
|
|
upperPascalMatrix( m, n ); write( "upper:" ); printMatrix( m, n, w );
|
|
lowerPascalMatrix( m, n ); write( "lower:" ); printMatrix( m, n, w );
|
|
symmetricPascalMatrix( m, n ); write( "symmetric:" ); printMatrix( m, n, w )
|
|
|
|
end
|
|
|
|
end.
|