I want to write a program that will make a date into the day of the week... I am having a problem figuring out how to get the leap year into this...and my program returns a invalid date for any day in the months of August (08) and Sept (09)
heres my code...I am very new to this, just a fyi
Code:
#include <stdio.h>
int main (void)
{
long int n;
float n_day;
int f, g;
int month;
int day;
int year;
char c;
int months[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
char *days[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
int i;
printf ("Welcome to the Date to Day-of-Week program.\n");
printf ("\nThe program will give the day of the week for any date from 1/1/1900\n");
printf ("\nEnter date (mm/dd/yyyy):");
scanf ("%i/%i/%i", &month, &day, &year);
if ( month > 12)
{
printf ("Invalid month, please re-enter date");
printf ("\nEnter date (mm/dd/yyyy):");
scanf ("%i/%i/%i", &month, &day, &year);
}
if ( day > 31)
{
printf ("Invalid day, please re-enter date");
printf ("\nEnter date (mm/dd/yyyy):");
scanf ("%i/%i/%i", &month, &day, &year);
}
if ( year <= 1900)
{
printf ("Invalid year, please re-enter date. Year must be greater than 1900");
printf ("\nEnter date (mm/dd/yyyy):");
scanf ("%i/%i/%i", &month, &day, &year);
}
while ( (c = getchar() != '\n') && c != EOF); /* clear input buffer */
if ( month <= 2)
f = year - 1;
else
f = year;
if ( month <= 2)
g = month +13;
else
g = month +1;
n = 1461 * f / 4 + 153 * g / 5 + day;
n = n - 621049 % 7;
printf ("%i/%i/%i falls on a %s\n", month, day, year, days[i]);
}