Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a program that determines the day of the week for a given date. You can in

ID: 3540566 • Letter: W

Question

Write a program that determines the day of the week for a given date. You can invent your own complex algorithm that takes into account the special leap year rules, and changes in calendars, but this is a case where it makes sense to look for things that are familiar. Who else might need to compute values from dates over a wide span of time? Historians work with dates, but generally don%u2019t compute from them. Astronomers, however, need to know the differences in time between orbital events in the solar system that span hundreds of years. Consulting an astronomy text, you will find that there is a standard way or representing a date, called the Julian Day Number (JDN). This is the number of days that have elapsed since January 1, 4713 BC. Given the JDN for a date, there is a simple formula that tells the day of the week:

DayofWeek = (JDN + 1) % 7

The result is in the range of 0 to 6, with 0 representing Sunday.

The only remaining problem is how to compute the JDN, which is not so simple. The algorithm computes several intermediate results that are added together to give the JDN. We look at the computation of each of these three intermediate values in turn.

If the date comes from the Gregorian calendar (later than October 15, 1582), then compute intRes1 with the following formula, otherwise let intRes1 be zero.

intRes1 = 2 %u2013 year / 100 + year / 400   (integer division)

The second intermediate result is computed as follows:

intRes2 = int(365.25 * year)

We compute the third intermediate value with this formula:

intRes3 = int(30.6001 * (month + 1) )

Finally, the JDN is computed this way:

JDN = intRes1 + intRes2 + intRes3 + day + 1720994.5

Your program should make appropriate use of value-returning functions in solving this program. These formulas require nine significant digits; you may have to use the integer type long and the floating-point type double. Your program should prompt appropriately for input of the date, and properly label the output. Use proper coding style with comments to document the algorithm as needed.

Explanation / Answer

#include<iostream>

using namespace std;

int JDN(int year,int month,int day)

{

int intRes1=0;

if((year>=1982)&&(month>=10)&&(day>15))

{

intRes1=0;

}

else

{

intRes1 = 2 - year / 100 + year / 400;

}

int intRes2 = int(365.25 * year);

int intRes3 = int(30.6001 * (month + 1));

int JDN= intRes1 + intRes2 + intRes3 + day + 1720994.5;

return JDN;

}

int Week(int JDN)

{

return (JDN+1)%7;

}


int main()

{

int day,month,year;

cout<<"Enter the day, month, year"<<endl;

cin >> day>>month>>year;


int jdn = JDN(year,month,day);

int week=Week(jdn);

cout << "Day is given by ";

switch(week)

{

case 0:

cout << "Sunday" << endl;

break;

case 1:

cout << "Monday" << endl;

break;

case 2:

cout << "Tuesday" << endl;

break;

case 3:

cout << "Wednesday" << endl;

break;

case 4:

cout << "Thursday" << endl;

break;

case 5:

cout << "Friday" << endl;

break;

case 6:

cout << "Saturday" << endl;

break;

}

return 0;

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote