/********************************************
This program implements the Smoothing Problem
from the last lab.
********************************************/
#include <iostream>
#include <fstream>
using namespace std;
double average(double *A, int N);
double shiftleft(double *A, int N, double x);
int main()
{
// Get k, the smoothing factor
int k;
cout << "Enter k: ";
cin >> k;
// Read first k values from the file
ifstream IN("data.txt");
double *A = new double[k];
for(int i = 0; i < k; i++)
IN >> A[i];
// Write out averages of successive k #'s
ofstream OUT("out.txt");
double next;
do {
OUT << average(A,k) << endl;
IN >> next;
shiftleft(A,k,next);
}while(IN);
return 0;
}
// returns the average of the values in
// array A, which has length N
double average(double *A, int N)
{
double total = 0;
for(int i = 0; i < N; i++)
total = total + A[i];
return total / N;
}
// Shifts all values in A left by 1, shifting
// in value x on the far right, and returning
// the original A[0] value, which gets shifted out
double shiftleft(double *A, int N, double x)
{
double first = A[0];
for(int i = 0; i < N - 1; i++)
A[i] = A[i+1];
A[N-1] = x;
return first;
}