RosettaCodeData/Task/Floyds-triangle/Action-/floyds-triangle.action
2023-07-01 13:44:08 -04:00

51 lines
721 B
Text

PROC Triangle(BYTE level)
INT v,i
BYTE x,y
BYTE ARRAY widths(20)
CHAR ARRAY tmp(5)
v=1
FOR y=1 TO level-1
DO
v==+y
OD
FOR x=0 TO level-1
DO
StrI(v+x,tmp)
widths(x)=tmp(0)
OD
v=1
FOR y=1 TO level
DO
FOR x=0 TO y-1
DO
StrI(v,tmp)
FOR i=tmp(0) TO widths(x)-1
DO
Put(32)
OD
Print(tmp)
IF x<y-1 THEN
Put(32)
ELSE
PutE()
FI
v==+1
OD
OD
RETURN
PROC Main()
BYTE LMARGIN=$52,oldLMARGIN
oldLMARGIN=LMARGIN
LMARGIN=0 ;remove left margin on the screen
Put(125) PutE() ;clear the screen
Triangle(5)
PutE()
Triangle(13)
LMARGIN=oldLMARGIN ;restore left margin on the screen
RETURN