#include <iostream>
#include <fstream>
#include <cstdlib>
#include<iomanip>
using namespace std;
 
 void readFile(ifstream & ,double list[] , int&);
 void computeC(double list[], double list_c[], int &);
 double average(double list_c[] , int &);
 char grade(double ,int &,int &,int &,int &);
 void writeFile(double list_c[],double list[],int &);
 
 int main(){
 	int size = 0, num = 0;
 	ifstream in;
 	cout << "Please enter the number of data that will be entered ";
	cin >> size;
	double list[size]; 
	double list_c[size];
	double avg;
	readFile(in, list, num);
	computeC(list, list_c,num);
	avg = average( list_c , num);
	cout << "Average" << avg;
	writeFile(list_c, list, num);
 	return 0;
 }
 
 void readFile(ifstream &in ,double list[] , int &num){
 	in.open("data.txt");
 	int i = 0;
 	if(in.fail()){
 		cerr<<"Sorry, input file does not exist!"<<endl;
		cerr<<"Press any key to continue . . . "<<endl;
		exit(1);
	 } while(!in.eof()){
	 	in >> list[i];
		num++;
		i++; 
	 } cout << num << " " << i;
	 // in.close();
 } 
 
void computeC(double list[], double list_c[], int &num){
		for(int i=0 ; i < num ; i++)
	{
		double a , b;		
		a=list[i];
		b=((static_cast<float>(5)/9)*(a-32));
		list_c[i]=b;

	}
}

double average(double list_c[] , int &num){
	float sum = 0 , avg;
	for(int i = 0 ; i < num ; i++){
		sum += list_c[i];
	}
	return avg = sum/num;
}

char grade(double a,int &num,int &cnt_h ,int &cnt_m,int &cnt_l){
		if(a>=35)
		{
			return'H';
			cnt_h++;
		}
		if((a<35)&&(a>=20))
		{
			return'M';
			cnt_m++;
		}
		if(a<20)
		{
			return'L';
			cnt_l++;
		}
}

void writeFile(double list_c[],double list[],int &num){
char c;
float a;
int cnt_h=0, cnt_m=0, cnt_l=0;
 
	ofstream outFile("doutput.txt");
	outFile<<"C(Celcius)"<<setw(18)<<"F (Farenheit)"<<setw(15)<<"Description"<<endl;
	outFile<<"=========="<<setw(14)<<"========="<<setw(16)<<"====="<<endl;
	
	for(int i=0;i<num;i++)
	{
		outFile<<setw(7)<<fixed<<setprecision(2)<<list_c[i];
		outFile<<setw(16)<<list[i];
		a = list_c[i];
		c = grade(a,num,cnt_h,cnt_m,cnt_l);
		 
		outFile << setw(16) << c << endl;
	}
	cout <<"count" << cnt_h << endl << cnt_m << endl << cnt_l << endl;
	outFile.close();
}
