Trying to calculate MEAN & STANDARD DEVIATION!!!
I've been trying to calculate the Second standard deviation but the average in the second loop isn't calculating correctly which is causing the standard deviation (method 2) to not calculate correctly. I can't find anything wrong. please help
Code:
#include <iostream>#include <iomanip>
#include <string>
#include <fstream>
#include <cmath>
usingnamespacestd;
int main ()
{
cout << "\nThis program will produce statistics (Mean, Standard Deviation, "
"Maximum and Minimum values of the list) for a list of integer values."
"The user will provide the names of input and output files.\n" ;
cout <<"\nEnter the name and location of the input file: " ;
string file_input ;
getline(cin, file_input);
ifstream fin( file_input.c_str() ) ;
if(fin.fail())
{
cout << "Bad file name or location.\n" ;
exit(0);
}
cout <<"Enter the name and location of the output file: ";
string file_output ;
getline(cin, file_output);
ofstream fout( file_output.c_str() );
cout << "\nReading values first time. . .\n" ;
fout << "\nReading values first time. . .\n" ;
int num;
int count = 0 ;
double total = 0 ;
int Min = 100;
int Max = 0;
double totalSq=0;
double avg=0;
double stdDev=0;
fin >> num;
while(!fin.eof())
{
cout << num << ' ' ;
fout << num << ' ' ;
if( ++count%10 == 0 )
{
cout << '\n' ;
fout << '\n' ;
}
{
total += num ;
if( num > Max ) Max = num ;
if( num < Min ) Min = num ;
totalSq+= num*num;
fin >> num;
}
}
avg = total / count ;
if (count>0)
{
stdDev = sqrt((totalSq/count) - pow(avg,2));
cout << fixed << setprecision(3);
cout << "\n\nNumber of values read: " << count << endl;
cout << setw(40) << right << "Mean of the values: " << avg << endl;
cout << setw(40) << right << "Standard deviation using method 1: " << stdDev << endl;
cout << setw(40) << right << "Greatest value: " << Max << '\n' ;
cout << setw(40) << right << "Least value: " << Min << '\n' ;
fout << fixed << setprecision(3);
fout << "\n\nNumber of values read: " << count << endl;
fout << setw(40) << right << "Mean of the values: " << avg << endl;
fout << setw(40) << right << "Standard deviation using method 1: " << stdDev << endl;
fout << setw(40) << right << "Greatest value: " << Max << '\n' ;
fout << setw(40) << right << "Least value: " << Min << '\n' ;
fin.close();
}
fin.open(file_input.c_str());
cout << "\nReading values second time. . ." << endl;
fout << "\nReading values second time. . ." << endl;
stdDev=0, totalSq=0;
total=0;
avg = total/count;
count = -1;
fin >> num;
while(!fin.eof())
{
if(++count%3 == 0)
{
cout << setw(3) << num;
fout << setw(3) << num ;
total += num;
totalSq+= (num-avg) * (num-avg);
}
fin >> num;
}
count = (int)(count/3) + 1;
if (count > 0)
{
stdDev = sqrt(totalSq/count);
cout << "\n\nNumber of values read: " << count << endl;
fout << "\n\nNumber of values read: " << count << endl;
cout << setw(40) << right << "\n\tStandard Deviation using method 2: "<< stdDev <<endl;
fout << setw(40) << right << "\n\tStandard Deviation using method 2: "<< stdDev <<endl;
}
return 0;
}