Averages/Simple moving average: Difference between revisions

Added C# 3 example.
(Added C# 3 example.)
Line 369:
}
</lang>
 
=={{header|C sharp|C#}}==
 
{{works with|C sharp|C#|3}}
 
<lang csharp>using System;
using System.Collections.Generic;
using System.Linq;
 
namespace SMA {
class Program {
static void Main(string[] args) {
var nums = Enumerable.Range(1, 5).Select(n => (double)n);
nums = nums.Concat(nums.Reverse());
 
var sma3 = SMA(3);
var sma5 = SMA(5);
 
foreach (var n in nums) {
Console.WriteLine("{0} (sma3) {1,-16} (sma5) {2,-16}", n, sma3(n), sma5(n));
}
}
 
static Func<double, double> SMA(int p) {
Queue<double> s = new Queue<double>(p);
return (x) => {
if (s.Count >= p) {
s.Dequeue();
}
s.Enqueue(x);
return s.Average();
};
}
}
}</lang>
 
Output:
<pre>
1 (sma3) 1 (sma5) 1
2 (sma3) 1.5 (sma5) 1.5
3 (sma3) 2 (sma5) 2
4 (sma3) 3 (sma5) 2.5
5 (sma3) 4 (sma5) 3
5 (sma3) 4.66666666666667 (sma5) 3.8
4 (sma3) 4.66666666666667 (sma5) 4.2
3 (sma3) 4 (sma5) 4.2
2 (sma3) 3 (sma5) 3.8
1 (sma3) 2 (sma5) 3
</pre>
 
=={{header|Common Lisp}}==
Anonymous user