Multiple distinct objects: Difference between revisions

Added solution for Action!
(Added solution for Action!)
Line 18:
 
<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}}==
Anonymous user