Thursday, April 5, 2012

Getdate by passing year and no. of days as arguments.

Hi All,


Below is the C++ program to get the date if you pass the year and number of days as arguments.



#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>


typedef struct {
int mm;
int dd;
int yy;
} ST_USER_DATE;




ST_USER_DATE GetDate(int yy, int day);


int main(int argc, char *argv[])
{
int day;
int yy;


ST_USER_DATE stDate;


yy = atoi(argv[1]);
day = atoi(argv[2]);

stDate = GetDate(yy, day);


printf("Date is MM-DD-YYYY - %02d-%02d-%04d\n",  stDate.mm, stDate.dd, stDate.yy);
fflush(stdout);

getch();

return 0;
}


ST_USER_DATE GetDate(int yy, int day)
{
int daysInMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int nMDay[12];
int dd;
int i, mm, sum;


ST_USER_DATE stDate;


if( (yy % 4 == 0 && yy % 100 != 0) ||  yy % 400 == 0) // leap year
daysInMonth[1] = 29;
else
daysInMonth[1] = 28;


sum = 0;
for(i=0; i<12; i++)
{
sum = sum + daysInMonth[i];
nMDay[i] = sum;
}

if( day <= nMDay[0])      { mm = 1;  dd = day; }
else if( day <=nMDay[1])  { mm = 2;  dd = day  - nMDay[0];  }
else if( day <=nMDay[2])  { mm = 3;  dd = day  - nMDay[1];  }
else if( day <=nMDay[3])  { mm = 4;  dd = day  - nMDay[2];  }
else if( day <=nMDay[4])  { mm = 5;  dd = day  - nMDay[3];  }
else if( day <=nMDay[5])  { mm = 6;  dd = day  - nMDay[4];  }
else if( day <=nMDay[6])  { mm = 7;  dd = day  - nMDay[5];  }
else if( day <=nMDay[7])  { mm = 8;  dd = day  - nMDay[6];  }
else if( day <=nMDay[8])  { mm = 9;  dd = day  - nMDay[7];  }
else if( day <=nMDay[9])  { mm = 10; dd = day  - nMDay[8];  }
else if( day <=nMDay[10]) { mm = 11; dd = day - nMDay[9];  }
else if( day <=nMDay[11]) { mm = 12; dd = day - nMDay[10]; }


stDate.mm = mm;
stDate.dd = dd;
stDate.yy = yy;


return (stDate);

}

No comments:

Post a Comment