/* 	TEE HUI YOU (001005-10-1332) SECTION 2
	
	Question 3*/
	
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cctype>
using namespace std;

void readFile (float F[], int &numF)
{
	ifstream inp ("input3.txt");
	int i = 0;
	float a;
	
	if (!inp)
	{
		cout << "Error !!\n";
		exit(0);
	}
		
	while (inp >> a)
	{
		F[i] = a;
		i++;
	}
	
	numF = i;
	
	inp.close();
}

void computeC (float C[])
{
	int numF = 50;
	float F[numF];
	
	readFile (F, numF);
	
	for (int i = 0; i < numF; i++)
		C[i] = (F[i] - 32) * 5 / 9;
}

float average ()
{
	int numF = 50;
	float F[numF], C[numF], sumC = 0, avrgC;
	
	readFile(F, numF);
	computeC (C);
	
	for (int i = 0; i < numF; i++)
		sumC += C[i];
		
	avrgC = sumC / numF;
	
	return avrgC;
}

void grade (char g[], int &numL, int &numM, int &numH)
{
	int numF = 50;
	float F[numF], C[numF];
	
	readFile (F, numF);
	computeC (C);
	
	numL = 0;
	numM = 0; 
	numH = 0;
	
	for (int i = 0; i < numF; i++)
	{
		if (C[i] < 20)
		{
			g[i] = 'L';
			numL++;
		}
		else if (C[i]< 35)
		{
			g[i] = 'M';
			numM++;
		}
		else
		{
			g[i] = 'H';
			numH++;
		}
	}
}

void writeFile ()
{
	ofstream out ("output3.txt");
	int numF = 50, numL, numM, numH;
	float F[numF], C[numF], avrg;
	char g[numF];
	
	readFile (F, numF);
	computeC(C);
	grade (g, numL, numM, numH);
	
	out << fixed << setprecision(2);
	out << "C(Celcius)" 
		<< setw(20) << "F (Farenheit)" 
		<< setw(20) << "Description\n";
	out << "==========" 
		<< setw(20) << "=============" 
		<< setw(20) << "===========\n";
	
	for (int i = 0; i < numF; i++)
		out << setw(7) << C[i] 
			<< setw(20) << F[i] 
			<< setw(17) << g[i] << endl;
			
	out.close();
}

int main ()
{
	int numF = 50, numL, numM, numH;
	float F[numF], C[numF], avrgC;
	char g[numF];
	
	readFile (F, numF);
	avrgC = average();
	grade (g, numL, numM, numH);
	writeFile ();
	
	cout << fixed << setprecision(2);
	cout << "Average of the temperature	: " << avrgC << endl;
	cout << "Number of high temperature	: " << numH << endl;
	cout << "Number of medium temperature	: " << numM << endl;
	cout << "Number of low temperature	: " << numL << endl;
	
	return 0;
}












