In C++ code Project 1 – Day of the Week Objectives: Use input and output stateme
ID: 3794229 • Letter: I
Question
In C++ code
Project 1 – Day of the Week
Objectives:
Use input and output statements
Use assignment statements
Instructions:
Write a program named DayOfWeek that computes the day of the week for any date entered by the user. The user will be prompted to enter a month, day, and year. The program will then display the day of the week for that date as a number between 0 and 6, where 0 represents Saturday and 6 represents Friday. The following example shows what the user will see on the screen:
This program calculates the day of the week for any date.
Enter month (1-12): 9
Enter day (1-31): 25
Enter century: 19
Enter year of the century: 98
The day of the week is 6 (0-Sat, 1-Sun, 2-Mon, 3-Tue, 4-Wed, 5-Thu, 6-Fri)
Hint: Use Zeller’s congruence to compute the day of the week. Use all integers for the data types. Zeller’s congruence relies on the following quantities:
j is the century (19 in our example)
k is the year within the century (98)
m is the month (9)
q is the day of the month (25)
The day of the week is determined by the following formula:
h = (q + 26(m + 1)/10 + k + k/4 + j/4 + 5j)mod 7
The results of all divisions are truncated by the modulus operator. The value of h will lie between 0 (Saturday) and 6 (Friday). Note: Zeller’s congruence assumes that January and February are treated as months 13 and 14 of the previous year; this affects the values of k and m, and possibly the value of j. For full credit, just read in the four values (month, day, century, and year), plug them into the formula, and print h, the day of the week. This formula assumes that January and February are months 13 and 14 of the previous year. If you want the day of week for 1 1 2006, you must type in 13 1 2005. (For 2 1 2006, type 14 1 2005 and so on)
Run:
Run the following 8 sets of data to fully test your program:
5 17 2008 (Should be 0-Sat)
10 5 2008 (Should be 1-Sun)
9 15 2008 (Should be 2-Mon)
8 5 2008 (Should be 3-Tue)
9 13 2006 (Should be 4-Wed)
1 1 2009 (Should be 5-Thu) must be typed in as 13 1 2008
2 6 2009 (Should be 6-Fri) must be typed in as 14 6 2008
1 10 2000 (Should be 2-Mon) must be typed in as 13 10 1999
Your birth date (Check the Internet or call your mom to verify this day of week!)
Submission:
Turn in the algorithm, the source code (properly documented), the output, and a signed Academic Honesty Promise all zipped into a folder. Submit to D2L
Extra Credit:
Use an if statement, or a switch statement, to print the actual word for the day of the week, ie. Saturday, Sunday, Monday, Tuesday, etc. and adjusting the month of January and February so you don’t have to type in month 13 and 14 with the earlier year. Also you must consider a January date in 2000 that has to be set back to 1999.
Algorithm for Project 1 (without the extra credit)
Define variables m (month), q (day), j (century – 20 in 2017), k (year of century – 17 in 2017), h (numeric day of week) as integers.
Prompt user for and input m, q, j, k
Calculate the numeric day of week (h) (Show formula used)
Print the numeric day of week
Stop
Explanation / Answer
c++ code (Solution for full problem with extra credit):
#include <bits/stdc++.h>
using namespace std;
int main()
{
std::map<int, string> mymap;
mymap[0] = "Saturday"; mymap[1] = "Sunday";
mymap[2] = "Monday"; mymap[3] = "Tues";
mymap[4] = "Wen"; mymap[5] = "Thursday";
mymap[6] = "Friday";
int j,k,m,q;
cout << "Enter month ";
cin >> m;
cout << "Enter day (1-31): ";
cin >> q;
cout << "Enter century: ";
cin >> j;
cout << "Enter year of the century: ";
cin >> k;
int out;
if(m == 1)
{
m = 13;
int year = j*100 + k;
year = year - 1;
k = year%100;
j = year/100;
out = (q + 26*(m + 1)/10 + k + k/4 + j/4 + 5*j)%7;
cout << "Day of the week is " << mymap[out] << endl;
}
else if( m == 2)
{
m = 14;
int year = j*100 + k;
year = year - 1;
k = year%100;
j = year/100;
out = (q + 26*(m + 1)/10 + k + k/4 + j/4 + 5*j)%7;
cout << "Day of the week is " << mymap[out] << endl;
}
else
{
out = (q + 26*(m + 1)/10 + k + k/4 + j/4 + 5*j)%7;
cout << "Day of the week is " << mymap[out] << endl;
}
return 0;
}
Sample Output:
akash@akash-SVE15116ENB:~/Desktop/chegg/Day of week$ ./a.out
Enter month
5
Enter day (1-31):
17
Enter century:
20
Enter year of the century:
8
Day of the week is Saturday
akash@akash-SVE15116ENB:~/Desktop/chegg/Day of week$ ./a.out
Enter month
10
Enter day (1-31):
5
Enter century:
20
Enter year of the century:
8
Day of the week is Sunday
akash@akash-SVE15116ENB:~/Desktop/chegg/Day of week$ ./a.out
Enter month
9
Enter day (1-31):
15
Enter century:
20
Enter year of the century:
8
Day of the week is Monday
akash@akash-SVE15116ENB:~/Desktop/chegg/Day of week$ ./a.out
Enter month
8
Enter day (1-31):
5
Enter century:
20
Enter year of the century:
8
Day of the week is Tues
akash@akash-SVE15116ENB:~/Desktop/chegg/Day of week$ ./a.out
Enter month
9
Enter day (1-31):
13
Enter century:
20
Enter year of the century:
6
Day of the week is Wen
akash@akash-SVE15116ENB:~/Desktop/chegg/Day of week$ ./a.out
Enter month
1
Enter day (1-31):
1
Enter century:
20
Enter year of the century:
9
Day of the week is Thursday
akash@akash-SVE15116ENB:~/Desktop/chegg/Day of week$ ./a.out
Enter month
2
Enter day (1-31):
6
Enter century:
20
Enter year of the century:
9
Day of the week is Friday
akash@akash-SVE15116ENB:~/Desktop/chegg/Day of week$ ./a.out
Enter month
1
Enter day (1-31):
10
Enter century:
20
Enter year of the century:
0
Day of the week is Monday