/*	Muhammad Anas Alif Shah Bin Azeli Shah
	001102-10-0219
	Section 2
	
	Muhammad Irfan Daniel Bin Abd Karim
	000717-10-0667
	Section 2
	
	Date of submission : 30 November 2019 */
	
#include <iostream>
#include <fstream>
#include <iomanip>
#define R 5

using namespace std;

void readFile (float F[])
{
	ifstream input;
	input.open("DataF.txt");
	ofstream output;
	output.open("OutputF.txt");
	
	while (!input.eof()) 
	{
		
		for(int i = 0; i < R; i++)
		{
			input >> F[i]; 
		}
		
	}
	
	input.close(); 
	output.close();
}

float computeC (float C[] , float F[] , int a)
{
	float sum;
	for (int i = 0; i < R; i++)
	{
		a++;
		C[i] = (5.0/9) * (F[i] - 32);
		sum += C[i];
	}
	return C , a;
}

void average (int a, float F[])
{
	float sum = 0;
	for (int i = 0; i < R; i++)
	{
		a++;
		sum += F[i];
	}
	
	float average = sum / a;
	cout << "The average temperature in Farenheit is " << fixed << setprecision(2) << average << "F." << endl;
}

int grade (float C[], char desc[])
{
	int a = 0, b = 0, c = 0;
	
	for (int i = 0; i < R; i++)
	{
		if (C[i] >= 35)
		{
			desc[i] = 'H';
			a += 1;
		}
		
		else if ((C[i] < 35) && (C[i] >= 20))
		{
			desc[i] = 'M';
			b += 1;
		}
		
		else if (C[i] < 20)
		{
			desc[i] = 'L';
			c += 1;
		}		
	}
	cout << "Number of high temperature : " << a << endl;
	cout << "Number of medium temperature : " << b << endl;
	cout << "Number of small temperature : " << c << endl;
}

int writeFile (float C[], float F[], int a)
{
	ifstream input("DataF.txt");
	ofstream output("OutputF.txt");
	
	output << "C(Celcius)" << setw(16) << "F(Farenheit)" << setw(14) << "Description" << endl;
	output << "==========" << setw(16) << "============" << setw(14) << "==========" << endl;
	
	char desc[R];
	grade (C, desc);
	a = 0;
	for (int i = 0; i < R; i++)
	{
		output << fixed << setprecision(2) << setw(7) << C[i] << setw(15) << F[i] << setw(13) << desc[i] << endl;
		a++;
	}
	return a;
}

int main()
{
	ifstream input ("DataF.txt");
	ofstream output ("OutputF.txt");
	float F[R], C[R];
	int a;
	
	readFile (F);
	computeC (C, F, a);
	average (a, F);
	writeFile (C, F, a);
	
	input.close();
	output.close();
}



































































