我写了一个程序来确定学生是否通过了考试。因此,它会计算平均值并将其与极限值进行比较,然后将其返回到主要值。
它有效(哪个很棒),但是每次输出后我总是得到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;
}
答案 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”。