Class
DayOfyear
has three
int,
data members:
year,
month,
and
day.
void DayOfYear::setDate(int mm, int dd, int yy)
{
if (mm >= 1 && mm <= 12)
month = mm;
else
throw invalid_argument( "Month must be 1-12");
if (yy >= 1900 && yy <= 2100)
year == yy;
else
throw invalid_argument( "Year must be >= 1900 and <= 2100");
if (( month == 2 && leapYear(year) && dd >= 1 && dd <= 29) ||
(dd >= 1 && dd <= days[month]))
day = dd;
else
throw invalid_argument( "Day is out of range for current month and year");
}
The constructor leaves one of the data member full of garbage. If there is an error, the assignments are a waste of time.
void DayOfYear::setDate(int mm, int dd, int yy)
{
if (mm < 1 || mm > 12) {
throw invalid_argument("Month must be 1-12");
}
if (yy < 1900 || yy > 2100) {
throw invalid_argument("Year must be >= 1900 and <= 2100");
}
if (dd < 1 || dd > (mm == 2 && leapYear(yy) ? 29 : days[month]) {
throw invalid_argument("Day is out of range for current month and year");
}
year = yy;
month = mm;
day = dd;
}
void DayOfYear::setDate(int mm, int dd, int yy)
{
if (mm < 1 || mm > 12) {
throw invalid_argument("Month must be 1-12");
}
if (yy < 1900 || yy > 2100) {
throw invalid_argument("Year must be >= 1900 and <= 2100");
}
const int len = mm == 2 && leapYear(yy) ? 29 : days[month];
if (dd < 1 || dd > len) {
throw invalid_argument("Day is out of range for current month and year");
}
year = yy;
month = mm;
day = dd;
}
The error messages should display the bad values.
The data member
guessAns
is a
string
object.
The memmber function returns
true
if this string consists of exactly
NUM_DIGIT
digits.
The
return false
in the loop
is executed if the character being examined is not a digit.
bool game::checkFormat()
{
if (guessAns.length() == NUM_DIGIT) {
for (int i = 0; i < NUM_DIGIT; i++) {
if (guessAns.compare(i,1,"0") < 0
|| guessAns.compare(i, 1, "9") > 0) {
return false;
}
}
} else {
return false;
}
return true;
}
bool game::checkFormat() const
{
if (guessAns.length() != NUM_DIGIT) {
//The lenghth of the string is wrong.
return false;
}
for (int i = 0; i < NUM_DIGIT; ++i) {
if (guessAns.compare(i, 1, "0") < 0
|| guessAns.compare(i, 1, "9") > 0) {
return false;
}
}
return true;
}