为什么我的函数最后返回0或1?

时间:2018-06-25 20:54:42

标签: c++ boolean

我写了一个程序来确定学生是否通过了考试。因此,它会计算平均值并将其与极限值进行比较,然后将其返回到主要值。

它有效(哪个很棒),但是每次输出后我总是得到0或1。我想这与布尔函数有关。但老实说我不确定。在这一点上,我感觉就像我在挖一个兔子洞,看不到出口。

任何帮助将不胜感激。

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

bool heeftToegang(float lab1, float lab2, float lab3, float toets1,
                  float toets2)
{
    const int kleinste = 0;
    const int hoogste = 10;
    const int toetsWeging = 3;
    int grens = 6;

    int gemiddelde = (lab1 + lab2 + lab3 +
               toets1 * toetsWeging + toets2 * toetsWeging) /
              9;

    string geen = " geen deelname";
    string oke = " => deelname oke";

    cout << "Lab: " << lab1 << " ; " << lab2 << " ; " << lab3
         << " Toets: " << toets1 << " ; " << toets2;

    // if else statement om de cijfers te checken
    if (lab1 > 8)
    {
        grens -= 0.5;
    }
    else if (lab2 > 8)
    {
        grens -= 0.5;
    }
    else if (lab3 > 8)
    {
        grens -= 0.5;
    }

    // check if var invalid
    if (lab1 == kleinste || lab2 == kleinste || lab3 == kleinste ||
        lab1 > hoogste || lab2 > hoogste || lab3 > hoogste)
    {
        cout << geen << " (Sprake van fraude)";
        return false;
    }
        // hier wordt er gekeken of het cijfer kleiner is dan 4
    else if (toets1 < 4 || toets2 < 4)
    {
        cout << geen;
        return false;
    }
    // check gemiddelde < 6
    else if (gemiddelde < grens)
    {
        cout << geen;
        return false;
    }
    else
    {
        cout << oke;
        return true;
    }
}
int main()
{
    cout << heeftToegang(5, 5, 5, 6, 6) << endl;
    cout << heeftToegang(5, 5, 6, 6, 6) << endl;
    cout << heeftToegang(5, 6, 6, 6, 6) << endl;
    cout << heeftToegang(6, 6, 6, 6, 6) << endl;
    cout << heeftToegang(6, 6, 6, 5, 6) << endl;
    cout << heeftToegang(6, 6, 6, 6, 5) << endl;
    cout << heeftToegang(6, 6, 6, 7, 7) << endl;
    cout << heeftToegang(8, 8, 6, 5, 6) << endl;
    cout << heeftToegang(8, 8, 0, 7, 8) << endl;
    cout << heeftToegang(9, 9, 9, 3.9, 9) << endl;
    return 0;
}

2 个答案:

答案 0 :(得分:0)

cout << heeftToegang(9, 9, 9, 3.9, 9) << endl;

将执行heeftToegang函数并输出返回的内容。使用cout输出时,布尔值显示为'0'或'1'(您可以使用boolalpha进行更改)。

您的函数完成了您想要的所有输出,因此您无需在最后输出布尔值。将您的函数调用更改为函数调用!

heeftToegang(9, 9, 9, 3.9, 9);

答案 1 :(得分:0)

如果要查看为布尔值打印的“ true”或“ false”,请使用std::boolalpha。否则,它们将被转换为整数并打印为值0(对于false)和1(对于true)-请注意:在C ++中,任何非零值都被视为“ true”。