Vector: Difference between revisions

2,052 bytes added ,  2 years ago
Added solution for Action!
(Add CLU)
(Added solution for Action!)
Line 53:
(55, 77)
(2.5, 3.5)
</pre>
 
=={{header|Action!}}==
{{libheader|Action! Tool Kit}}
<lang Action!>INCLUDE "D2:REAL.ACT" ;from the Action! Tool Kit
 
DEFINE X_="+0"
DEFINE Y_="+6"
 
TYPE Vector=[CARD x1,x2,x3,y1,y2,y3]
 
PROC PrintVec(Vector POINTER v)
Print("[") PrintR(v X_)
Print(",") PrintR(v Y_) Print("]")
RETURN
 
PROC VecIntInit(Vector POINTER v INT ix,iy)
IntToReal(ix,v X_)
IntToReal(iy,v Y_)
RETURN
 
PROC VecRealInit(Vector POINTER v REAL POINTER rx,ry)
RealAssign(rx,v X_)
RealAssign(ry,v Y_)
RETURN
 
PROC VecStringInit(Vector POINTER v CHAR ARRAY sx,sy)
ValR(sx,v X_)
ValR(sy,v Y_)
RETURN
 
PROC VecAdd(Vector POINTER v1,v2,res)
RealAdd(v1 X_,v2 X_,res X_) ;res.x=v1.x+v2.x
RealAdd(v1 Y_,v2 Y_,res Y_) ;res.y=v1.y+v2.y
RETURN
 
PROC VecSub(Vector POINTER v1,v2,res)
RealSub(v1 X_,v2 X_,res X_) ;res.x=v1.x-v2.x
RealSub(v1 Y_,v2 Y_,res Y_) ;res.y=v1.y-v2.y
RETURN
 
PROC VecMult(Vector POINTER v REAL POINTER a Vector POINTER res)
RealMult(v X_,a,res X_) ;res.x=v.x*a
RealMult(v Y_,a,res Y_) ;res.y=v.y*a
RETURN
 
PROC VecDiv(Vector POINTER v REAL POINTER a Vector POINTER res)
RealDiv(v X_,a,res X_) ;res.x=v.x/a
RealDiv(v Y_,a,res Y_) ;res.y=v.y/a
RETURN
 
PROC Main()
Vector v1,v2,res
REAL s
 
Put(125) PutE() ;clear the screen
VecStringInit(v1,"12.3","-4.56")
VecStringInit(v2,"9.87","654.3")
ValR("0.1",s)
 
VecAdd(v1,v2,res)
PrintVec(v1) Print(" + ") PrintVec(v2)
Print(" =") PutE() PrintVec(res) PutE() PutE()
 
VecSub(v1,v2,res)
PrintVec(v1) Print(" - ") PrintVec(v2)
Print(" =") PutE() PrintVec(res) PutE() PutE()
 
VecMult(v1,s,res)
PrintVec(v1) Print(" * ") PrintR(s)
Print(" = ") PrintVec(res) PutE() PutE()
 
VecDiv(v1,s,res)
PrintVec(v1) Print(" / ") PrintR(s)
Print(" = ") PrintVec(res)
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Vector.png Screenshot from Atari 8-bit computer]
<pre>
[12.3,-4.56] + [9.87,654.3] = [22.17,649.74]
 
[12.3,-4.56] - [9.87,654.3] = [2.43,-658.86]
 
[12.3,-4.56] * .1 = [1.23,-0.456]
 
[12.3,-4.56] / .1 = [123,-45.6]
</pre>
 
Anonymous user