我正在为我的C ++课程制作一个程序来使用不同的函数验证日期,但主要是布尔值。我的问题是它不会给它带来错误。我已经尝试使用else命令而不是返回false;没有其他但它似乎没有改变任何东西。这是代码:
int main()
{
char Data[80];
int Month,Day,Year;
int *pMonth,*pDay,*pYear;
pMonth = &Month;
pDay = &Day ;
pYear = &Year ;
cout << "\n\t\tGive me date : ";
cin >> Data;
trial();
PauseScreen(28,20,3);
return 0;
}
void SetCursorPosition(int X, int Y)
{
COORD XY = { Y,X };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),XY);
}
void SetTextColor(int Color)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), Color);
}
void ClearScreen()
{
system("cls");
}
void PauseScreen(int x, int y, int color)
{
SetCursorPosition(x,y);
SetTextColor(color);
system("pause");
}
int InputValues(char *A, int *pM, int *pD, int *pY)
{
char Buffer[10];
Buffer[0] = A[0];
Buffer[1] = A[1];
Buffer[2] = '\0';
*pM = atoi(Buffer);
Buffer[0] = A[3];
Buffer[1] = A[4];
Buffer[2] = '\0';
*pD = atoi(Buffer);
Buffer[0] = A[6];
Buffer[1] = A[7];
Buffer[2] = A[8];
Buffer[3] = A[9];
Buffer[4] = '\0';
*pY = atoi(Buffer);
return strlen(A);
}
bool ValidateMonth(int A)
{
if ( A > 0 && A < 13 )
{
return true;
}
return false;
}
bool ValidateDay(int day,int month)
{
if ( month == 1 || month == 3 || month == 5 || month == 7 || month == 9|| month == 10|| month == 12 && (day > 0 && day < 32) )
{
return true;
}
return false;
}
bool ValidateDayTwo(int day,int month)
{
if ( month == 4 || month == 6 || month == 8 || month == 11 && (day > 0 && day < 31) )
{
return true;
}
return false;
}
void trial()
{
if(ValidateDay && ValidateDayTwo && ValidateMonth)
{
SetCursorPosition(10,10);
cout << "Date is Valid";
}
else
{
SetCursorPosition(10,10);
cout << "You done messed up BALAKI";
}
}
答案 0 :(得分:4)
您实际上并未在if语句中调用函数。 ValidDay
,ValidDayTwo
,ValidMonth
if(ValidateDay && ValidateDayTwo && ValidateMonth)
相反,您需要通过传入参数
来调用该函数if(ValidateDay(somearg1) && ValidateDayTwo(somearg2) && ValidateMonth(somearg2))
答案 1 :(得分:1)
你没有正确调用函数(好吧,你实际上根本没有调用它们) - 没有参数:
if(ValidateDay(?) && ValidateDayTwo(?) && ValidateMonth(?))
例如,您的ValidateDayTwo
函数有两个参数。
函数的返回类型是bool的事实不会改变任何东西,这不符合你的想法。函数的名称是函数本身的指针,并且没有按预期得到错误,因为该指针不是NULL。
答案 2 :(得分:1)
bool ValidateMonth(int A)
{
if ( A > 0 && A < 13 )
{
return true;
}
return false;
}
没有必要说&#34;如果条件为真,则返回true;否则,返回false&#34;。您只需返回评估条件的结果:
bool ValidateMonth(int A)
{
return A > 0 && A < 13;
}