You can read more about the function used for checking if the given year is a leap year or not by reading this article: Leap year checking algorithm in C
You can find the function that does the opposite coversion by reading Finding date given the day of the year in C
In order to work easily with a date, I first defined a structure consisting of two integers, day and year and a pointer to an array of characters for the month.
typedef struct { int day; char *month; int year; }date;
/* * Description: * Computes and returns the day of the year * Parameters: * d - the date * Returns: * day - the corresponding day of the year */ int DateToDay(date *d) { int noDays[] = {31,28,31,30,31,30,31,31,30,31,30,31};//number of days of each month char months[][20] = {"January","February","March","April","May","June", "July","August","September","October","November","December"}; int isLeapYear = 0, day = 0, i = 0; isLeapYear = LeapYear(d->year); if(isLeapYear == 1) { noDays[1] = 29; } if(strcmp(d->month,"January") != 0)//the date is not in january { for(i=0; i<12 && strcmp(d->month,months[i]) != 0; i++) { if(i != 0 ) { day += noDays[i-1]; } } day += noDays[i-1]+d->day; } else//the date is in January { day = d->day; } return day; }
Example:
#include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h> int LeapYear(int year); int DateToDay(date *d); int main(void) { date *d; int day = 0, isFound = 0, i =0; char months[][20] = {"January","February","March","April","May","June", "July","August","September","October","November","December"}; d = (date*)malloc(sizeof(date)); d->month = (char*)malloc(sizeof(char)*20); printf("\n Enter the day: "); scanf("%d",&d->day); printf(" Enter the month: "); fflush(stdin); gets(d->month); printf(" Enter the year: "); scanf("%d",&d->year); for(i=0; i<12; i++) { if(strcmp(months[i],d->month) == 0) { isFound = 1; break; } } if(d->day > 0 && isFound == 1) { day = DateToDay(d); printf("\n\tDay of the year: %d",day); } else { printf("\n\tIncorrect date!"); } getch(); return 0; }Output:
Videoslots - YouTube, Videoslots, Free Play, Bonus, Videoslots
ReplyDeleteVideoslots - YouTube, Videoslots, Free Play, Bonus, Videoslots · Videoslots. Free youtube link to mp3 slot machines. Free demo slots · Video slots. Free demo slots.