//Mirza Sabrina Binti Mohd Salmi & Nurul Alis Alia Binti Mohamad Zamri Section 2
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<iomanip>
using namespace std;

char grade(float temp)
{
		if(temp<20)
		return 'L';
		
		else if(temp<35)
		return 'M';
		
		else 
		return 'H';
}

void writeFile(float fhr[],float celc[],int numofdata)
{
	int i;
	ofstream out("Output2.txt");
	out<<left<<setw(10)<<"C(Celcius)"<<right<<setw(20)<<"F (Farenheit)"<<setw(20)<<"Description"<<endl
		<<setw(10)<<"=========="<<setw(18)<<"========="<<setw(19)<<"====="<<endl;
	for( i=0;i<numofdata;i++)
	{
		out<<fixed<<setprecision(2);
		out<<setw(7)<<celc[i]<<setw(19)<<fhr[i]<<setw(19)<<grade(celc[i])<<endl;
	}
	out.close();
}

float avg(float temp[],int numofdata)
{
	float total;
	for(int i=0;i<numofdata;i++)
	{
		total+=temp[i];
	}
	return total/numofdata;
}

void computeC(float frh[],float celc[],int numofdata)
{
	for( int i=0;i<numofdata;i++)
	{
		celc[i]=5.0/9.0*(frh[i]-32.0);
	}
}

void readFile(char filename[15],float frh[],int &numofdata)
{
	ifstream in;
	in.open(filename);
	if(!in)
	{
		cout<<"Sorry, input file does not exist!"<<endl;
		exit(0);
	}
	while(in>>frh[numofdata])
	{
		numofdata++;
	}
	in.close();
}

int main()
{
	int numofdata=0,H=0,M=0,L=0;
	char grades;
	float frh[100]={0};
	readFile("input3.txt",frh,numofdata);
	float celc[numofdata]={0};
	computeC(frh,celc,numofdata);
	writeFile(frh,celc,numofdata);
	for(int i=0;i<numofdata;i++)
	{
		grades=grade(celc[i]);
		if (grades=='H')
		H++;
		else if( grades=='M')
		M++;
		else
		L++;	
	}
	cout<<fixed<<setprecision(1)<<"Average of the temperature: "<<avg(celc,numofdata)<<endl
		<<"Number of high temperature: "<<H<<endl
		<<"Number of medium temperature: "<<M<<endl
		<<"Number of low temperature: "<<L;

	return 0;
	
}
