Date validation. Keeps looping even though my date is actually valid
up vote
-3
down vote
favorite
I tried entering an invalid date which is 4 31 2007(April is the 4th month on the calendar and only have 30 days on it) and my code did what it suppose to do but why does my do while loop keep looping even though I entered a valid date?
class test
{
int nmonths;
int month;
int day;
int year;
public:
test()
{
int x;
do
{
cout << "Enter the date of most recent test (mm dd yyyy) (Ex. 01
09 2011):" <<endl;
cin >> month >> day >> year;
int days;
if ( month < 1 || month > 12 )
{
cout << "INVALID DATE!!!" << endl;
}
if ( month == 4 || month== 6 || month == 9 || month == 11)
{
days = 30;
if( day < 1 || day > 30)
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
if ( month == 2)
{
bool leapyear = (year% 4 == 0 && year % 100 != 0) || (year %
400 == 0);
if (leapyear == 0)
{
days = 28;
if (day < 1 || day > 28)
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
else
days = 29;
if ( day < 1 || day > 29 )
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
else
{
days = 31;
if ( day < 1 || day > 31)
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
}while(x == 0);
};
This is the photo of output I'm getting
c++ c++11 visual-c++ c++-cli do-while
add a comment |
up vote
-3
down vote
favorite
I tried entering an invalid date which is 4 31 2007(April is the 4th month on the calendar and only have 30 days on it) and my code did what it suppose to do but why does my do while loop keep looping even though I entered a valid date?
class test
{
int nmonths;
int month;
int day;
int year;
public:
test()
{
int x;
do
{
cout << "Enter the date of most recent test (mm dd yyyy) (Ex. 01
09 2011):" <<endl;
cin >> month >> day >> year;
int days;
if ( month < 1 || month > 12 )
{
cout << "INVALID DATE!!!" << endl;
}
if ( month == 4 || month== 6 || month == 9 || month == 11)
{
days = 30;
if( day < 1 || day > 30)
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
if ( month == 2)
{
bool leapyear = (year% 4 == 0 && year % 100 != 0) || (year %
400 == 0);
if (leapyear == 0)
{
days = 28;
if (day < 1 || day > 28)
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
else
days = 29;
if ( day < 1 || day > 29 )
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
else
{
days = 31;
if ( day < 1 || day > 31)
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
}while(x == 0);
};
This is the photo of output I'm getting
c++ c++11 visual-c++ c++-cli do-while
1
What is your condition to leave the loop? And how isx
supposed to become!= 0
? Magic?
– Aganju
Nov 11 at 6:00
add a comment |
up vote
-3
down vote
favorite
up vote
-3
down vote
favorite
I tried entering an invalid date which is 4 31 2007(April is the 4th month on the calendar and only have 30 days on it) and my code did what it suppose to do but why does my do while loop keep looping even though I entered a valid date?
class test
{
int nmonths;
int month;
int day;
int year;
public:
test()
{
int x;
do
{
cout << "Enter the date of most recent test (mm dd yyyy) (Ex. 01
09 2011):" <<endl;
cin >> month >> day >> year;
int days;
if ( month < 1 || month > 12 )
{
cout << "INVALID DATE!!!" << endl;
}
if ( month == 4 || month== 6 || month == 9 || month == 11)
{
days = 30;
if( day < 1 || day > 30)
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
if ( month == 2)
{
bool leapyear = (year% 4 == 0 && year % 100 != 0) || (year %
400 == 0);
if (leapyear == 0)
{
days = 28;
if (day < 1 || day > 28)
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
else
days = 29;
if ( day < 1 || day > 29 )
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
else
{
days = 31;
if ( day < 1 || day > 31)
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
}while(x == 0);
};
This is the photo of output I'm getting
c++ c++11 visual-c++ c++-cli do-while
I tried entering an invalid date which is 4 31 2007(April is the 4th month on the calendar and only have 30 days on it) and my code did what it suppose to do but why does my do while loop keep looping even though I entered a valid date?
class test
{
int nmonths;
int month;
int day;
int year;
public:
test()
{
int x;
do
{
cout << "Enter the date of most recent test (mm dd yyyy) (Ex. 01
09 2011):" <<endl;
cin >> month >> day >> year;
int days;
if ( month < 1 || month > 12 )
{
cout << "INVALID DATE!!!" << endl;
}
if ( month == 4 || month== 6 || month == 9 || month == 11)
{
days = 30;
if( day < 1 || day > 30)
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
if ( month == 2)
{
bool leapyear = (year% 4 == 0 && year % 100 != 0) || (year %
400 == 0);
if (leapyear == 0)
{
days = 28;
if (day < 1 || day > 28)
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
else
days = 29;
if ( day < 1 || day > 29 )
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
else
{
days = 31;
if ( day < 1 || day > 31)
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
}while(x == 0);
};
This is the photo of output I'm getting
c++ c++11 visual-c++ c++-cli do-while
c++ c++11 visual-c++ c++-cli do-while
edited Nov 11 at 7:21
Saeed Zhiany
1,56441624
1,56441624
asked Nov 11 at 4:57
Alxs29
1
1
1
What is your condition to leave the loop? And how isx
supposed to become!= 0
? Magic?
– Aganju
Nov 11 at 6:00
add a comment |
1
What is your condition to leave the loop? And how isx
supposed to become!= 0
? Magic?
– Aganju
Nov 11 at 6:00
1
1
What is your condition to leave the loop? And how is
x
supposed to become != 0
? Magic?– Aganju
Nov 11 at 6:00
What is your condition to leave the loop? And how is
x
supposed to become != 0
? Magic?– Aganju
Nov 11 at 6:00
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
You never set x
to a non-zero value.
Try adding x = 1;
before the cin
.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
You never set x
to a non-zero value.
Try adding x = 1;
before the cin
.
add a comment |
up vote
1
down vote
You never set x
to a non-zero value.
Try adding x = 1;
before the cin
.
add a comment |
up vote
1
down vote
up vote
1
down vote
You never set x
to a non-zero value.
Try adding x = 1;
before the cin
.
You never set x
to a non-zero value.
Try adding x = 1;
before the cin
.
answered Nov 11 at 5:01
Buddy
8,55852951
8,55852951
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53245976%2fdate-validation-keeps-looping-even-though-my-date-is-actually-valid%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
What is your condition to leave the loop? And how is
x
supposed to become!= 0
? Magic?– Aganju
Nov 11 at 6:00