无法获取布尔值来返回false C ++

时间:2014-04-26 15:17:02

标签: c++

我正在为我的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";
    }
}

3 个答案:

答案 0 :(得分:4)

您实际上并未在if语句中调用函数。 ValidDayValidDayTwoValidMonth

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;
}