#include<iostream>
#include<fstream>
#include<cstring>
#include<iomanip>
#define R 5
#define C 12
using namespace std;
ofstream nmcb("nmcb.txt");
void readFile(ifstream &dllm,int sales[][12],string brunch[])
{

	string name;
	for(int i=0;i<R;i++)
	{
		for(int j=0;j<C;j++)
		{
			dllm>>sales[i][j];
			
		}
		
		getline(dllm,name);
		brunch[i] = name;
		
	}
	
}

float grandTotalSales(int sales[][12])
{
	float sum=0;
	for(int i=0;i<R;i++)
	{
		for(int j=0;j<C;j++)
		{
		  sum+=sales[i][j];
	    }
	}
	return sum*1000;
}
float averageMonthlySales(int sales[][12])
{
	float sum=0;
	float avrg;
	for(int i=0;i<R;i++)
	{
		for(int j=0;j<C;j++)
		{
		  sum+=sales[i][j];
	    }
	}
	avrg=(sum*1000)/12.0;
	
	return avrg;
}

int monthTotalSales(int sales [][12],string month[],int sum_month[])
{
   
   for(int j=0;j<C;j++)
   {
        for(int i=0;i<R;i++)
        {
    	sum_month[j]+=sales[i][j];
        }
        
    sum_month[j]*1000;    
   
   }
}


int storeTotalSales(int sales[][12],string brunch[], int sum_brunch[])
{
	

	
	for(int i=0;i<R;i++)
	{
		for(int j=0;j<C;j++)
		{
			sum_brunch[i]+=sales[i][j];
			
		}
	    sum_brunch[i]*=1000;    
	}		
}

int indicesOfHighestSales(int sales[][12],string brunch[],string month[],string &b,string &m)
{
	int highSale=0;

    for(int i=0;i<R;i++)
	{
	   for(int j=0;j<C;j++)
	   {
        if(sales[i][j]>highSale)
		{
		highSale=sales[i][j];
		b=brunch[i];
		m=month[j];
	    }
	   }
	   
	   	
	}
	return highSale*1000; 
}

void profitstore(int sum_brunch[],string brunch[])
{
	string b;
	for(int i=0;i<R;i++)
	{
		if(sum_brunch[i]>600000)
		{
			b=brunch[i];
		}
	}
	
	cout<<b<<endl;
}
int main ()
{
	int sum_brunch[5]={0};
	int sum_month[C]={0};
	float grand_total,sale;
	float average;
	string b,m;
	ifstream dllm;
	dllm.open("sales2017.txt");
	
	int sales [R][C];
    string brunch[R];
    string month[12]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
    
	readFile(dllm,sales,brunch);
	grand_total=grandTotalSales(sales);
	average=averageMonthlySales(sales);
	monthTotalSales(sales,month,sum_month);
	storeTotalSales(sales,brunch,sum_brunch);
	sale=indicesOfHighestSales(sales,brunch,month,b,m);
	
	nmcb<<fixed<<setprecision(2);
	nmcb<<right<<setw(20);
	nmcb<<"Grand total of sales over all stores : RM "<<grand_total<<endl;
	nmcb<<"Average sales per month : RM "<<average<<endl;
	
	nmcb<<endl;
	
    nmcb<<"The highest sales : "<<endl;
	nmcb<<"----------------------"<<endl;
	nmcb<<"Store : " <<b<<endl;
	nmcb<<"Month : " <<m<<endl;
	nmcb<<"Sales : RM "<<sale<<endl;
	
	nmcb<<"Total sales by store : "<<endl;
	nmcb<<"Store "<<setw(20)<<" Total Sales"<<endl;
	nmcb<<"-------------------------------------------\n";
	for(int i =0;i<R;i++)
	{	
	nmcb<<brunch[i]<<right<<setw(20)<<sum_brunch[i]<<endl;
		
	}
	for(int j=0;j<C;j++)
	{
		nmcb<<month[j]<<right<<setw(20)<<sum_month[j]*1000<<endl;
	}
	
	
	
	return 0;    
}
