#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 hujanmm[4][12])
{
	FILE *datvar3;
	datvar3=fopen("statistic.dat","w");
	
	float avgmonth[12];

	float avgnorth,avgsouth,avgeast,avgwest;
	avgmonth[0]=avgmonthcalc(1,hujanmm);avgmonth[1]=avgmonthcalc(2,hujanmm);avgmonth[2]=avgmonthcalc(3,hujanmm);avgmonth[3]=avgmonthcalc(4,hujanmm);
	avgmonth[4]=avgmonthcalc(5,hujanmm);avgmonth[5]=avgmonthcalc(6,hujanmm);avgmonth[6]=avgmonthcalc(7,hujanmm);avgmonth[7]=avgmonthcalc(8,hujanmm);
	avgmonth[8]=avgmonthcalc(9,hujanmm);avgmonth[9]=avgmonthcalc(10,hujanmm);avgmonth[10]=avgmonthcalc(11,hujanmm);avgmonth[11]=avgmonthcalc(12,hujanmm);
	avgnorth=avgregioncalc(0,hujanmm);avgsouth=avgregioncalc(1,hujanmm);avgeast=avgregioncalc(2,hujanmm);avgwest=avgregioncalc(3,hujanmm);
	
	printf("Rainfall");
	fprintf(datvar3,"Rainfall");
	printf("\n\tJan\tFeb\tMar\tApr\t\tMei\t\tJun\tJuly\tAug\tSept\t\tOct\t\tNov\tDec\n");
	fprintf(datvar3,"\n\tJan\tFeb\tMar\tApr\t\tMei\t\tJun\tJuly\tAug\tSept\t\tOct\t\tNov\tDec\n");
	printf("         \n\t=============================================================================================================================\nAvg(mm)\t");
	fprintf(datvar3,"\n\t=============================================================================================================================\nAvg(mm)\t");
	printf("%.1f\t%.1f\t%.1f\t%.1f\t\t%.1f\t\t%.1f\t%.1f\t%.1f\t%.1f\t\t%.1f\t\t%.1f\t%.1f\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(datvar3,"%.1f\t%.1f\t%.1f\t%.1f\t\t%.1f\t\t%.1f\t%.1f\t%.1f\t%.1f\t\t%.1f\t\t%.1f\t%.1f\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(datvar3);//close to make sure next function also can use statistic.dat file
	
	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]);
	
	datvar3=fopen("statistic.dat","a+");//statistic.dat file open back for appending

	printf("\n\n");
	fprintf(datvar3,"\n\n");
	
	
	
	fprintf(datvar3,"\tRegion\t\tAvg(mm)\t\tType");
	printf("\tRegion\t\tAvg(mm)\t\tType");	
	fprintf(datvar3,"\n\t======\t\t=======\t\t========");
	printf("\n\t======\t\t=======\t\t========");	
	
	fprintf(datvar3,"\n\tNorth\t\t%.1f\t\t",avgnorth);
	printf("\n\tNorth\t\t%.1f\t\t",avgnorth);	
	fclose(datvar3);detType(avgnorth);datvar3=fopen("statistic.dat","a+");
	
	fprintf(datvar3,"\n\tSouth\t\t%.1f\t\t",avgsouth);
	printf("\n\tSouth\t\t%.1f\t\t",avgsouth);
	fclose(datvar3);detType(avgsouth);datvar3=fopen("statistic.dat","a+");
	
	fprintf(datvar3,"\n\tEast\t\t%.1f\t\t",avgeast);
	printf("\n\tEast\t\t%.1f\t\t",avgeast);
	fclose(datvar3);detType(avgeast);datvar3=fopen("statistic.dat","a+");
	
	fprintf(datvar3,"\n\tWest\t\t%.1f\t\t",avgwest);
	printf("\n\tWest\t\t%.1f\t\t",avgwest);
	fclose(datvar3);detType(avgwest);datvar3=fopen("statistic.dat","a+");
	
	fprintf(datvar3,"\n\n");
	printf("\n\n");
		
	
	printf("Number of dry month : %d\n",detDry(avgmonth));
	fprintf(datvar3,"Number of dry month : %d\n",detDry(avgmonth));
	printf("Number of moderate month : %d\n",detMod(avgmonth));
	fprintf(datvar3,"Number of moderate month : %d\n",detMod(avgmonth));
	printf("Number of wet month : %d\n",detWet(avgmonth));
	fprintf(datvar3,"Number of wet month : %d\n",detWet(avgmonth));





	fprintf(datvar3,"The driest month : ");
	printf("The driest month : ");
	fclose(datvar3);detDriest(avgmonth);datvar3=fopen("statistic.dat","a+");

	fprintf(datvar3,"\nThe wettest month : ");
	printf("\nThe wettest month : ");
	fclose(datvar3);detWettest(avgmonth);datvar3=fopen("statistic.dat","a+");
	
	
	fclose(datvar3);
	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 *datvar4;
	datvar4=fopen("statistic.dat","a+");
	int det;	
	if (a<=127)
		{
		printf("dry\t");
		fprintf(datvar4,"dry\t");
		}
		else if(a<=254)
			{
			printf("moderate\t");
			fprintf(datvar4,"moderate\t");
			}
			else
				{
				printf("wet\t");
				fprintf(datvar4,"wet\t");
				}
	fclose(datvar4);			
}

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 *datvar5;
	datvar5=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(datvar5,"Jan");
			break;
		case 1:
			printf("Feb");
			fprintf(datvar5,"Feb");
			break;
		case 2:
			printf("Mac");
			fprintf(datvar5,"Mac");
			break;
		case 3:
			printf("Apr");
			fprintf(datvar5,"Apr");
			break;
		case 4:
			printf("May");
			fprintf(datvar5,"May");
			break;
		case 5:
			printf("Jun");
			fprintf(datvar5,"Jun");
			break;		
		case 6:		
			printf("July");
			fprintf(datvar5,"July");
			break;
		case 7:
			printf("Aug");
			fprintf(datvar5,"Aug");
			break;
		case 8:
			printf("Sep");
			fprintf(datvar5,"Sep");
			break;
		case 9:
			printf("Oct");
			fprintf(datvar5,"Oct");
			break;
		case 10:
			printf("Nov");
			fprintf(datvar5,"Nov");
			break;
		case 11:
			printf("Dec");
			fprintf(datvar5,"Dec");
			break;					
	}

}

void detWettest(float month[12])
{
	FILE *datvar6;
	datvar6=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(datvar6,"Jan");
			break;
		case 1:
			printf("Feb");
			fprintf(datvar6,"Feb");
			break;
		case 2:
			printf("Mac");
			fprintf(datvar6,"Mac");
			break;
		case 3:
			printf("Apr");
			fprintf(datvar6,"Apr");
			break;
		case 4:
			printf("May");
			fprintf(datvar6,"May");
			break;
		case 5:
			printf("Jun");
			fprintf(datvar6,"Jun");
			break;			
		case 6:
			printf("July");
			fprintf(datvar6,"July");
			break;
		case 7:
			printf("Aug");
			fprintf(datvar6,"Aug");
			break;
		case 8:
			printf("Sep");
			fprintf(datvar6,"Sep");
			break;
		case 9:
			printf("Oct");
			fprintf(datvar6,"Oct");
			break;
		case 10:
			printf("Nov");
			fprintf(datvar6,"Nov");
			break;
		case 11:
			printf("Dec");
			fprintf(datvar6,"Dec");
			break;					
	}

}
   
   

