-
April 3rd, 2013, 07:40 PM
#1
New Programmer Trying to Output the Day of the Week
Hi guys, I'm just starting coding and having a heck of a time trying to figure out how to make this application. It's pretty simple and I just want it to input a date, then output a day of the week. If any of you could just give me a few pointers as to where I'm going wrong, I'd greatly appreciate it!
Code:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int startday = 0, sm = 1, sd = 1, sy = 2000, cm = 0, cd = 0, cy = 0;
cout << "Please enter the current month, day, and year: ";
cin >> cm >> cd >> cy; int curyear = cy, curmonth = cm, curday = cd;
//Months added
while (curmonth >= 1)
{
if (curmonth == 1 || 3 || 5 || 7 || 8 || 10 || 12) //March, May, July, August, September, December
{
startday = startday + 31;
}
else if (curmonth == 2)
{
//LEAP YEAR HERE, YOU!
if ((curyear % 4 == 0) && ((curyear % 400 == 0) || (curyear / 4 != 100)))
{
startday = startday + 29;
}
else
{
startday = startday + 28;
}
}
else if (curmonth == 4 || 6 || 9 || 11)
{
startday = startday + 30;
}
curmonth--;
}
//Years Added
for (; cy < sy; cy++)
{
startday = startday + (365 * cy) + cd;
}
int dayname = (startday - 1) % 7;
if (dayname == 6)
cout << cm << " " << cd << " " << curyear << " was a Thursday";
else if (dayname == 0)
cout << cm << " " << cd << " " << curyear << " was a Friday";
else if (dayname == 1)
cout << cm << " " << cd << " " << curyear << " was a Saturday";
else if (dayname == 2)
cout << cm << " " << cd << " " << curyear << " was a Sunday";
else if (dayname == 3)
cout << cm << " " << cd << " " << curyear << " was a Monday";
else if (dayname == 4)
cout << cm << " " << cd << " " << curyear << " was a Tuesday";
else cout << cm << " " << cd << " " << curyear << " was a Wednesday";
return 0;
}
-
April 3rd, 2013, 11:27 PM
#2
Re: New Programmer Trying to Output the Day of the Week
Originally Posted by ec23
Hi guys, I'm just starting coding and having a heck of a time trying to figure out how to make this application.
Code:
if (curmonth == 1 || 3 || 5 || 7 || 8 || 10 || 12)
Explain what that line is supposed to do. Now after explaining, have you seen any code in a C++ book, tutorial, or even on this site by experienced programmers that resembles the line above? There is a reason why you won't see code like that anywhere, since it isn't correct.
So to cut to the chase, whatever you think that line was supposed to do, doesn't do what you think it does. If you want to compare a value to multiple values, it is done by taking that value and literally comparing it to each value:
Code:
if ( curmonth == 1 || curmonth == 3 || curmonth == 5 || curmonth == 7 || curmonth == 8 || curmonth == 10 || curmonth == 12)
For each boolean subexpression, you have to state the entire comparison. Think of it this way:
Code:
if ( (curmonth == 1) || (curmonth == 3) || (curmonth == 5) || (curmonth == 7) || (curmonth == 8) || (curmonth == 10) || (curmonth == 12) )
Note that each subexpression is parenthesized.
Your original attempt just took (curmonth == 1) and if not true, then went ahead and applied || to 3, which will always result in "true" or 1. The "|| 5 || 7 || 8 || 10 || 12" is thrown away by the compiler, since the boolean expression already resulted in "true", and due to || being applied, was "short-circuited".
Regards,
Paul McKenzie
Last edited by Paul McKenzie; April 3rd, 2013 at 11:35 PM.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|