#include <iostream> // JACK LEE /990212-01-5315/ A19EC0057 / SECTION 07 / 26.11.2019
#include<fstream> // MUHAMMAD SUHAIL / C0082352 / A19EC0269 / SECTION 07 / 26.11.2019
#include<iomanip> 
using namespace std ;

void readFile(string name , double num[] , int&n);
void computeC (double num[] , double NUM[], int&n);
double average(double F[100], int&n);
char grade(double C[100],int&n);
void writeFile(double F[100] , double C[100] , int&n);
int main ()
{
	string name = "input3.txt" ;
	double F[100], C[100], c ;
	int n , h = 0, m = 0 , l = 0;
	char Grade ; 
	
	readFile (name, F,n ) ;
	computeC (F, C, n);
	
	cout << fixed << setprecision(2) ;
	cout << "Average of the temperature: " << average(F, n) << endl ;
	
	for (int i = 0 ; i < n; i ++)
	{
		Grade = grade(C, n) ;
		if (Grade == 'H')
		h += 1 ;
		if (Grade == 'M')
		m += 1 ;
		if (Grade == 'L')
		l += 1 ;
	}
	cout << "Number of high temperature: " << h << endl ;
	cout << "Number of medium temperature: " << m << endl ;
	cout << "Number of low temperature: " <<  l << endl ;
	writeFile(F,C,n) ;
	
	return 0 ;

}

void readFile(string name , double F[100] , int&n)
{
	n = 0 ;
	ifstream in ;
	in.open("input3.txt") ; // value of F

	for (int i = 0; i < 100; i ++)
	{
		in >> F[i] ;
		if(in)
		n += 1 ;		
	}
}
void computeC (double F[100] , double C[100], int&n)
{
	double c;
	for (int i = 0 ; i < 100; i ++)
	{
		C[i] = (5.0/9.0)*(F[i] - 32.0) ;	
	}
}

double average(double F[100], int&n)
{
	double sum = 0 , average ;
	for (int i = 0 ; i < 100 ; i++)
	{
		sum += F[i] ;
	}
	average = sum / n ;
	
	return average ;
}

char grade(double C[100], int&n) // temperature in C
{
	char grade ;
	for (int i = 0 ; i < n ; i ++)
	{
		if(C[i] >= 35)
		{
			grade = 'H' ;
			return grade ;
		}
		if((C[i] < 35) && (C[i] >=20) )
		{
			grade = 'M' ;
			return grade ;
		}
		if(C[i] < 20)
		{
			grade = 'L' ;
			return grade ;
		}
	}
}

void writeFile(double F[100] , double C[100] , int&n)
{
	ofstream out ;
	out.open("outputs.txt") ;
	int m ;	
	out << "C(Celcius)" << setw(20) << " F (Farenheit)" << setw(18) ;
	out << "Description" << endl ;
	
	out << "==========" << setw(19) << "==========" << setw(18) << "==========" << endl ;
	
	for (int i = 0 ; i < n ; i ++)
	{
		m = 0 ;
		m = i + 1 ;
		out << fixed << setprecision(2) ;
		out << setw(7) << right << C[i] << setw(19)<< right << F[i] << setw(16) << grade (C,m) << endl ;
	}
	
}
