#include<conio.h>
#include<stdio.h>
#include<process.h>
float inchTomm(float);
void overallmain(float[4][12]);
float avgmonthcalc(const int,float[4][12]);
float avgregioncalc(int,float[4][12]);
void detType(float);
int detDry(float[12]);
int detMod(float[12]);
int detWet(float[12]);
void detWettest(float[12]);
void detDriest(float[12]);


int main()
{
	int raininch[4][12];
	float rainmm[4][12];
	FILE *in, *out;
	in = fopen("hujan.dat", "r");
	out= fopen("rainfall.out", "w");

	for(int i=0; i<4; i++)
	{
		
		for(int j=0; j<12; j++)
		{
		fscanf(in, "%d", &raininch[i][j]);
	    }
	    
	    fscanf(in,"\n");
	}
	
	 for(int i=0;i<4;i++)
	{
		for( int j=0;j<12;j++)
		{
		  rainmm[i][j]=inchTomm(raininch[i][j]);
		  fprintf(out,"%.2f  ",rainmm[i][j]);	
		}
		
		fprintf(out,"\n");	
		
	}
	
	fclose(in);
	fclose(out);
	
	overallmain(rainmm);
	
 }  
	
	float inchTomm(float inch)
	{
	  float newmm;
	  newmm=inch*25.4;
	  return newmm;
   }
   
   void overallmain(float rain[4][12])
{
	FILE *newout;
	newout=fopen("statistic.dat","w");
	
	float avgmonth[12];

	float avgnorth,avgsouth,avgeast,avgwest;
	avgmonth[0]=avgmonthcalc(1,rain);avgmonth[1]=avgmonthcalc(2,rain);avgmonth[2]=avgmonthcalc(3,rain);avgmonth[3]=avgmonthcalc(4,rain);
	avgmonth[4]=avgmonthcalc(5,rain);avgmonth[5]=avgmonthcalc(6,rain);avgmonth[6]=avgmonthcalc(7,rain);avgmonth[7]=avgmonthcalc(8,rain);
	avgmonth[8]=avgmonthcalc(9,rain);avgmonth[9]=avgmonthcalc(10,rain);avgmonth[10]=avgmonthcalc(11,rain);avgmonth[11]=avgmonthcalc(12,rain);
	avgnorth=avgregioncalc(0,rain);avgsouth=avgregioncalc(1,rain);avgeast=avgregioncalc(2,rain);avgwest=avgregioncalc(3,rain);
	
	printf("Rainfall");
	fprintf(newout,"Rainfall");
	printf("\n\tJan\tFeb\tMar\tApr\tMei\tJun\tJuly\tAug\tSept\tOct\tNov\tDec\n");
	fprintf(newout,"\n\tJan\tFeb\tMar\tApr\t\tMei\tJun\tJuly\tAug\tSep\tOct\tNov\tDec");
	printf("\t====================================================================================================\nAvg(mm)\t");
	fprintf(newout,"\t===========================================================================================\nAvg(mm)\t");
	printf("%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t\nType\t",avgmonth[0],avgmonth[1],avgmonth[2],avgmonth[3],avgmonth[4],avgmonth[5],avgmonth[6],avgmonth[7],avgmonth[8],avgmonth[9],avgmonth[10],avgmonth[11]);
	fprintf(newout,"%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t\nType\t",avgmonth[0],avgmonth[1],avgmonth[2],avgmonth[3],avgmonth[4],avgmonth[5],avgmonth[6],avgmonth[7],avgmonth[8],avgmonth[9],avgmonth[10],avgmonth[11]);
	
	fclose(newout);
	detType(avgmonth[0]);detType(avgmonth[1]);detType(avgmonth[2]);detType(avgmonth[3]);detType(avgmonth[4]);detType(avgmonth[5]);
	detType(avgmonth[6]);detType(avgmonth[7]);detType(avgmonth[8]);detType(avgmonth[9]);detType(avgmonth[10]);detType(avgmonth[11]);
	
	newout=fopen("statistic.dat","a+");

	printf("\n\n");
	fprintf(newout,"\n\n");
	
	
	
	fprintf(newout,"\tRegion\t\tAvg(mm)\t\tType");
	printf("\tRegion\t\tAvg(mm)\t\tType");	
	fprintf(newout,"\n\t======\t\t=======\t\t========");
	printf("\n\t======\t\t=======\t\t========");	
	
	fprintf(newout,"\n\tNorth\t\t%.2f\t\t",avgnorth);
	printf("\n\tNorth\t\t%.2f\t\t",avgnorth);	
	fclose(newout);detType(avgnorth);newout=fopen("statistic.dat","a+");
	
	fprintf(newout,"\n\tSouth\t\t%.2f\t\t",avgsouth);
	printf("\n\tSouth\t\t%.2f\t\t",avgsouth);
	fclose(newout);detType(avgsouth);newout=fopen("statistic.dat","a+");
	
	fprintf(newout,"\n\tEast\t\t%.2f\t\t",avgeast);
	printf("\n\tEast\t\t%.2f\t\t",avgeast);
	fclose(newout);detType(avgeast);newout=fopen("statistic.dat","a+");
	
	fprintf(newout,"\n\tWest\t\t%.2f\t\t",avgwest);
	printf("\n\tWest\t\t%.2f\t\t",avgwest);
	fclose(newout);detType(avgwest);newout=fopen("statistic.dat","a+");
	
	fprintf(newout,"\n\n");
	printf("\n\n");
		
	
	printf("Number of dry month : %d\n",detDry(avgmonth));
	fprintf(newout,"Number of dry month : %d\n",detDry(avgmonth));
	printf("Number of moderate month : %d\n",detMod(avgmonth));
	fprintf(newout,"Number of moderate month : %d\n",detMod(avgmonth));
	printf("Number of wet month : %d\n",detWet(avgmonth));
	fprintf(newout,"Number of wet month : %d\n",detWet(avgmonth));





	fprintf(newout,"The driest month : ");
	printf("The driest month : ");
	fclose(newout);detDriest(avgmonth);newout=fopen("statistic.dat","a+");

	fprintf(newout,"\nThe wettest month : ");
	printf("\nThe wettest month : ");
	fclose(newout);detWettest(avgmonth);newout=fopen("statistic.dat","a+");
	
	
	fclose(newout);
	printf("\n\n\nPress any button to continue");






getch();
}

float avgmonthcalc(const int j,float rain[4][12])
{
	float avgmonth=0;
	int i,k;
	k=j-1;
	for(i=0;i<=3;i++)
		for(k;k<j;k++)	
		{avgmonth=avgmonth+rain[i][k];
		break;}	
	avgmonth=avgmonth/4;	
	return avgmonth;
}

float avgregioncalc(int j,float Rain[4][12])
{
	float avgregion=0;
	int i;
		for(i=0;i<12;i++)	
		{avgregion=avgregion+Rain[j][i];
		}
	avgregion=avgregion/12;	
	return avgregion;
}

void detType(float a)
{
	FILE *newout2;
	newout2=fopen("statistic.dat","a+");
	int det;	
	if (a<=127)
		{
		printf("dry\t");
		fprintf(newout2,"dry\t");
		}
		else if(a<=254)
			{
			printf("moderate\t");
			fprintf(newout2,"moderate\t");
			}
			else
				{
				printf("wet\t");
				fprintf(newout2,"wet\t");
				}
	fclose(newout2);			
}

int detDry(float avg[12])
{
	int a=0,i;
	for(i=0;i<12;i++)
	{
		if(avg[i]<127)
		a=a+1;
		
	}
	return a;
}

int detMod(float Avg[12])
{
	int a=0,i;
	for(i=0;i<12;i++)
	{
		if(Avg[i]>127)
		if(Avg[i]<=254)
		a=a+1;
		
	}
	return a;
}

int detWet(float AvG[12])
{
	int a=0,i;
	for(i=0;i<12;i++)
	{
		if(AvG[i]>254)
		a=a+1;
		
	}
	return a;
}

void detDriest(float montha[12])
{
	FILE *newout3;
	newout3=fopen("statistic.dat","a+");
	
	int j,set;
	float driest=999;
	for(j=0;j<12;j++)
	{
		if(montha[j]<driest)
		{
		driest=montha[j];
		set=j;
		}
		else if(montha[j]>=driest)
		set;
	}

	switch(set)
	{
		case 0:
			printf("Jan");
			fprintf(newout3,"Jan");
			break;
		case 1:
			printf("Feb");
			fprintf(newout3,"Feb");
			break;
		case 2:
			printf("Mac");
			fprintf(newout3,"Mac");
			break;
		case 3:
			printf("Apr");
			fprintf(newout3,"Apr");
			break;
		case 4:
			printf("May");
			fprintf(newout3,"May");
			break;
		case 5:
			printf("Jun");
			fprintf(newout3,"Jun");
			break;		
		case 6:		
			printf("July");
			fprintf(newout3,"July");
			break;
		case 7:
			printf("Aug");
			fprintf(newout3,"Aug");
			break;
		case 8:
			printf("Sep");
			fprintf(newout3,"Sep");
			break;
		case 9:
			printf("Oct");
			fprintf(newout3,"Oct");
			break;
		case 10:
			printf("Nov");
			fprintf(newout3,"Nov");
			break;
		case 11:
			printf("Dec");
			fprintf(newout3,"Dec");
			break;					
	}

}

void detWettest(float month[12])
{
	FILE *newout4;
	newout4=fopen("statistic.dat","a+");
	
	int j,set;
	float wettest=0;
	for(j=0;j<12;j++)
	{
		if(month[j]>wettest)
		{
		wettest=month[j];
		set=j;
		}
		else if(month[j]<=wettest)
		set;
	}

	switch(set)
	{
		case 0:
			printf("Jan");
			fprintf(newout4,"Jan");
			break;
		case 1:
			printf("Feb");
			fprintf(newout4,"Feb");
			break;
		case 2:
			printf("Mac");
			fprintf(newout4,"Mac");
			break;
		case 3:
			printf("Apr");
			fprintf(newout4,"Apr");
			break;
		case 4:
			printf("May");
			fprintf(newout4,"May");
			break;
		case 5:
			printf("Jun");
			fprintf(newout4,"Jun");
			break;			
		case 6:
			printf("July");
			fprintf(newout4,"July");
			break;
		case 7:
			printf("Aug");
			fprintf(newout4,"Aug");
			break;
		case 8:
			printf("Sep");
			fprintf(newout4,"Sep");
			break;
		case 9:
			printf("Oct");
			fprintf(newout4,"Oct");
			break;
		case 10:
			printf("Nov");
			fprintf(newout4,"Nov");
			break;
		case 11:
			printf("Dec");
			fprintf(newout4,"Dec");
			break;					
	}

}
   
   

