Patrick B. answered 10/20/19
Math and computer tutor/teacher
using namespace std;
#include <iostream>
#include <stdio.h>
#include <limits.h>
typedef struct _TResult
{
int aNums[10];
int n;
int min;
int max;
long sum;
double meanAvg;
double midrange;
int range;
} * TResult;
void ShowResults(TResult results, bool arrayDump = false)
{
if (arrayDump)
{
for (int iLoop=0; iLoop<results->n; iLoop++) { cout << results->aNums[iLoop] << endl; }
}
cout <<"*****************************************" << endl;
cout << " N = " << results->n << endl;
cout << " total = " << results->sum << endl;
cout << " mean average = " << results->meanAvg << endl;
cout << " min = " << results->min << endl;
cout << " max = " << results->max << endl;
cout << " range = " << results->range << endl;
cout << " midrange = " << results->midrange << endl;
}
/**********************************************
reads the data from the file,
calculates the average, min, and max;
populates the result structure
returns # of stats read from file or -1 on failure
********************************************************/
int Go( char * filename, TResult results)
{
int N=-1;
int A[10];
int num;
int min = INT_MAX;
int max = INT_MIN;
long sum=0;
FILE * fptr = fopen(filename,"r");
if (fptr!=NULL)
{
bool switch_flag = false;
while (
(fscanf(fptr,"%d",&num) != EOF)
)
{
N++;
if (N>=10)
{
switch_flag=true;
break;
}
A[N]=num;
cout << " read int #" << num << " for N = " << N << endl;
sum += num;
if (num>max) { max=num; }
if (num<min) { min=num; }
} //while
if (!switch_flag) { N++; }
//mean average, min, max, etc calculated here... results structure populated
results->n = N;
memcpy(results->aNums,A,N*sizeof(int));
results->max = max;
results->min = min;
results->sum = sum;
results->meanAvg = sum*1.0f/N;
results->range = max-min;
results->midrange = (max+min)/2.0f;
ShowResults(results);
} //fptr
return(N);
} //Go
int main( int argc, char * argv[])
{
struct _TResult results;
if (argc!=2)
{
cout << " please specify the input file :> avg filename " << endl;
}
else
{
int N = Go(argv[1], &results);
}
}