My program reads the data from the infile. But outputs the wrong results accept for lowest temperature -21 which is correct. I have played with the while loop where I believe the problem lies but have been unsuccessful in getting the right results. Can somebody steer me in the right direction. I have been learning alot from this program, but not enough to make it work.
infile txt:
34 -12
30 -21
32 -18
40 -5
52 10
75 32
85 49
92 53
88 31
65 9
42 -17
39 -19
My code so far:
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int getData();
double averageHigh();
double averageLow();
double indexHighTemp();
double indexLowTemp();
int i, j;
double hsum = 0, lsum = 0;
double avgh, avgl;
double high = 0, low = 0;
int ind;
int const row = 12, col = 2, num = 12;
double temp[row][col];
int main()
{
cout <<"Processing Data"<<endl;
getData();
averageHigh();
averageLow();
indexHighTemp();
indexLowTemp();
cout <<" "<<endl;
system("PAUSE");
return 0;
}
int getData()
{
ifstream inFile;
inFile.open ("c:\\Ch9_Ex9Data.txt");
if (!inFile)
{
cout << "Unable to open input file!"<<endl;
return 1;
}
while(inFile >> temp[i][0] >> temp[i][1] >> temp[i][2])
{
++i;
}
}
double averageHigh()
{
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
{
hsum = (hsum + (temp[0][i]));
}
}
avgh = hsum / 12;
cout << "Average high temperature: ";
cout << avgh <<endl;
return 0;
}
double averageLow()
{
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
{
lsum = (lsum + (temp[1][i]));
}
}
avgl = lsum / 12;
cout << "Average low temperature: ";
cout << avgl << endl;
return 0;
}
double indexHighTemp()
{
ind = 0;
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
{
if (high <= (temp[0][i]))
{
high = (temp[0][i]);
ind = i;
}
}
}
cout << "Highest temperature: ";
cout << (temp[0][ind]) << endl;
return 0;
}
double indexLowTemp()
{
ind = 0;
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
{
if (low >= (temp[1][i]))
{
low = (temp[1][i]);
ind = i;
}
}
}
cout << "Lowest temperature: ";
cout << (temp[1][ind]) << endl;
return 0;
}