Comma quibbling: Difference between revisions

Added solution for Action!
No edit summary
(Added solution for Action!)
Line 223:
{ABC and DEF}
{ABC, DEF, G and H}</pre>
 
=={{header|Action!}}==
<lang Action!>PROC Append(CHAR ARRAY text,suffix)
BYTE POINTER srcPtr,dstPtr
BYTE len
 
len=suffix(0)
IF text(0)+len>255 THEN
len=255-text(0)
FI
IF len THEN
srcPtr=suffix+1
dstPtr=text+text(0)+1
MoveBlock(dstPtr,srcPtr,len)
text(0)==+suffix(0)
FI
RETURN
 
PROC Quibble(CARD ARRAY items INT count CHAR ARRAY result)
INT i
 
result(0)=0
Append(result,"(")
FOR i=0 TO count-1
DO
Append(result,items(i))
IF i=count-2 THEN
Append(result," and ")
ELSEIF i<count-2 THEN
Append(result,", ")
FI
OD
Append(result,")")
RETURN
 
PROC Test(CARD ARRAY items BYTE count)
CHAR ARRAY result(256)
 
Quibble(items,count,result)
PrintE(result)
RETURN
 
PROC Main()
CARD ARRAY items(5)
 
Test(items,0)
 
items(0)="ABC"
Test(items,1)
 
items(1)="DEF"
Test(items,2)
 
items(2)="G"
Test(items,3)
 
items(3)="H"
Test(items,4)
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Comma_quibbling.png Screenshot from Atari 8-bit computer]
<pre>
()
(ABC)
(ABC and DEF)
(ABC, DEF and G)
(ABC, DEF, G and H)
</pre>
 
=={{header|Ada}}==
Anonymous user