Multiple distinct objects: Difference between revisions
Content added Content deleted
Puppydrum64 (talk | contribs) |
(Added solution for Action!) |
||
Line 18: | Line 18: | ||
<lang 11l>(1..n).map(i -> Foo())</lang> |
<lang 11l>(1..n).map(i -> Foo())</lang> |
||
=={{header|Action!}}== |
|||
<lang Action!>DEFINE PTR="CARD" |
|||
DEFINE OBJSIZE="4" |
|||
TYPE Record=[BYTE b CHAR c INT i] |
|||
PROC PrintObjects(PTR ARRAY items BYTE count) |
|||
Record POINTER r |
|||
BYTE n |
|||
FOR n=0 TO count-1 |
|||
DO |
|||
r=items(n) |
|||
PrintF("(%B ""%C"" %I) ",r.b,r.c,r.i) |
|||
IF n MOD 3=2 THEN PutE() FI |
|||
OD |
|||
PutE() |
|||
RETURN |
|||
PROC Main() |
|||
DEFINE MIN="1" |
|||
DEFINE MAX="20" |
|||
DEFINE BUFSIZE="80" |
|||
BYTE ARRAY buffer(BUFSIZE) |
|||
PTR ARRAY items(MAX) |
|||
BYTE count=[0],n,LMARGIN=$52,oldLMARGIN |
|||
Record POINTER r |
|||
oldLMARGIN=LMARGIN |
|||
LMARGIN=0 ;remove left margin on the screen |
|||
Put(125) PutE() ;clear the screen |
|||
WHILE count<min OR count>max |
|||
DO |
|||
PrintF("How many objects (%I-%I)?",MIN,MAX) |
|||
count=InputB() |
|||
OD |
|||
FOR n=0 TO count-1 |
|||
DO |
|||
items(n)=buffer+n*OBJSIZE |
|||
OD |
|||
PutE() |
|||
PrintE("Uninitialized objects:") |
|||
PrintObjects(items,count) |
|||
FOR n=0 TO count-1 |
|||
DO |
|||
r=items(n) |
|||
r.b=n r.c=n+'A r.i=-n |
|||
OD |
|||
PutE() |
|||
PrintE("Initialized objects:") |
|||
PrintObjects(items,count) |
|||
LMARGIN=oldLMARGIN ;restore left margin on the screen |
|||
RETURN</lang> |
|||
{{out}} |
|||
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Multiple_distinct_objects.png Screenshot from Atari 8-bit computer] |
|||
<pre> |
|||
How many objects (1-20)?20 |
|||
Uninitialized objects: |
|||
(0 "♥" 80) (0 "♥" 0) (0 "♥" 0) (0 "♥" 0) (0 "♥" 0) (0 "♥" 0) |
|||
(0 "♥" 0) (0 "♥" 0) (0 "♥" 0) (0 "♥" 0) (0 "♥" 0) (0 "♥" 0) |
|||
(0 "♥" 0) (0 "♥" 0) (0 "♥" 0) (0 "♥" 0) (0 "♥" 0) (0 "♥" 0) |
|||
(0 "♥" 0) (0 "♥" 0) |
|||
Initialized objects: |
|||
(0 "A" 0) (1 "B" -1) (2 "C" -2) (3 "D" -3) (4 "E" -4) (5 "F" -5) |
|||
(6 "G" -6) (7 "H" -7) (8 "I" -8) (9 "J" -9) (10 "K" -10) (11 "L" -11) |
|||
(12 "M" -12) (13 "N" -13) (14 "O" -14) (15 "P" -15) (16 "Q" -16) (17 "R" -17) |
|||
(18 "S" -18) (19 "T" -19) |
|||
</pre> |
|||
=={{header|Ada}}== |
=={{header|Ada}}== |