Averages/Simple moving average: Difference between revisions

Added BBC BASIC
(Added BBC BASIC)
Line 290:
print MA;
}</lang>
 
=={{header|BBC BASIC}}==
{{works with|BBC BASIC for Windows}}
<lang bbcbasic> MAXPERIOD = 10
FOR n = 1 TO 5
PRINT "Number = ";n TAB(12) " SMA3 = ";FNsma(n,3) TAB(30) " SMA5 = ";FNsma(n,5)
NEXT
FOR n = 5 TO 1 STEP -1
PRINT "Number = ";n TAB(12) " SMA3 = ";FNsma(n,3) TAB(30) " SMA5 = ";FNsma(n,5)
NEXT
END
DEF FNsma(number, period%)
PRIVATE nums(), accum(), index%(), window%()
DIM nums(MAXPERIOD,MAXPERIOD), accum(MAXPERIOD)
DIM index%(MAXPERIOD), window%(MAXPERIOD)
accum(period%) += number - nums(period%,index%(period%))
nums(period%,index%(period%)) = number
index%(period%) = (index%(period%) + 1) MOD period%
IF window%(period%)<period% window%(period%) += 1
= accum(period%) / window%(period%)</lang>
Output:
<pre>
Number = 1 SMA3 = 1 SMA5 = 1
Number = 2 SMA3 = 1.5 SMA5 = 1.5
Number = 3 SMA3 = 2 SMA5 = 2
Number = 4 SMA3 = 3 SMA5 = 2.5
Number = 5 SMA3 = 4 SMA5 = 3
Number = 5 SMA3 = 4.66666667 SMA5 = 3.8
Number = 4 SMA3 = 4.66666667 SMA5 = 4.2
Number = 3 SMA3 = 4 SMA5 = 4.2
Number = 2 SMA3 = 3 SMA5 = 3.8
Number = 1 SMA3 = 2 SMA5 = 3
</pre>
 
=={{header|C}}==