#include <iostream>
#include <fstream>
#include <cstring>
#include <iomanip>
#define S 100
using namespace std ;

void readFile (ifstream &inp  ,float F[] ,float &num)
{
	
	int i = 0 ;
	
	while (inp >> F[i++])
	{
	num ++ ;
	}

}

void computeC (float F[] ,float C[] ,float num)
{
	for (int i = 0 ; i < num ; i ++)
	{
		C[i] = (5.0/9.0) * (F[i] - 32.00) ;
	}
}

float average (float C[] ,float  num )
{
	float sum = 0.00 , average = 0.00 ;
	
	for (int i = 0 ; i < num ; i++ )
	{
		sum += C[i] ;
	}
	average = sum / num ;
	
	return average ;
}

string grade (float x)
{
	string y ;
	
	if (x >= 35.00)
	y = "H" ;
	else if (x < 35 && x >= 20)
	y = "M" ;
	else if (x < 20)
	y = "L" ;
	
	return y ;
	
}

void writeFile (float F[] , float C[] , int num)
{
	ofstream out("Q3output.txt") ;
	
	out << fixed << setprecision (2) ;
	
	out << "C(Celcius)\t"<<"F(Farenheit)\t" <<"Description" << endl ;
	
	for ( int i = 0 ; i < num ; i ++)
	{
		out << C[i] << "\t\t" << F[i] << "\t\t\t" << grade (C[i]) << endl ;
	}
	
	out.close () ;
}

int main ()
{
	float F [S] , C[S] , num , aver  ;
	string g , a = "H" , b = "M" ,c = "L" ; 
	int x = 0 , y = 0 , z = 0 ;
	ifstream inp ("inputfile.txt") ;
	
	readFile (inp, F , num) ;
	computeC (F , C , num) ;
	
	aver = average (C , num ) ;
	writeFile (F , C ,num) ;
	cout << fixed << setprecision (2) ;
	
	for ( int i = 0 ; i < num ; i ++)
	{
		if (grade (C[i]) == a)
		x++ ;
		else if (grade (C[i]) == b)
		y++ ;
		else if (grade (C[i]) == c ) 
		z++ ;
	}
	
	cout << "Average of the temperature : " << aver << endl 
		 << "Number of high temperature : " << x << endl 
		 << "Number of medium temperature : " << y << endl 
	 	 << "Number of low temperature : " << z << endl ; 
	
	inp.close () ;
	return 0 ;
}
