RosettaCodeData/Task/Pascal-matrix-generation/PureBasic/pascal-matrix-generation.basic

55 lines
927 B
Plaintext

EnableExplicit
Define.i x=5, I, J
Macro Print_Pascal_matrix(typ)
PrintN(typ)
For I=1 To x
For J=1 To x : Print(RSet(Str(p(I,J)),3," ")+Space(3)) : Next
PrintN("")
Next
Print(~"\n\n")
EndMacro
Procedure Pascal_sym(n.i,Array p.i(2))
Define.i I,J
p(1,0)=1
For I=1 To n
For J=1 To n : p(I,J)=p(I-1,J)+p(I,J-1) : Next
Next
EndProcedure
Procedure Pascal_upp(n.i,Array p.i(2))
Define.i I,J
p(0,0)=1
For I=1 To n
For J=1 To n : p(I,J)=p(I-1,J-1)+p(I,J-1) : Next
Next
EndProcedure
Procedure Pascal_low(n.i,Array p.i(2))
Define.i I,J
Pascal_upp(n,p())
Dim p2.i(n,n)
CopyArray(p(),p2())
For I=1 To n
For J=1 To n : Swap p(J,I),p2(I,J) : Next
Next
EndProcedure
OpenConsole()
Dim p.i(x,x)
Pascal_upp(x,p())
Print_Pascal_matrix("Upper:")
Dim p.i(x,x)
Pascal_low(x,p())
Print_Pascal_matrix("Lower:")
Dim p.i(x,x)
Pascal_sym(x,p())
Print_Pascal_matrix("Symmetric:")
Input()
End