您的 print() 走出界限:
print()
void FunctionRobot :: print(){ for (int i; i<100; i++) for (int j; j<1; j++) race[position()][j]; }
j 未初始化。你可以试试 int j = 0 作为一个开始。类似的 i 。
j
int j = 0
i
此外,你知道这个函数名为PRINT但不打印任何东西,实际上它除了调用之外什么都不做 position() 。
position()
int FunctionRobot :: position(int place=0){ // log with a base 2 needs to be divided by the "x" // below is the Robots formula to determine each of their movements double x = ( 2 * (log(place)/log(2))); <-------- now x is a double return (int) x; <-------- now x is an integer, are you sure about that? }
这里发生精度损失。我们这样说吧 x 被赋值为3.14。然后你把它(由于函数的返回类型也是int而自动发生转换)变成一个整数,因此它将被转换为3,因此你会损失精度。
x
关于 main.cpp
main.cpp
你打电话给用户输入1然后你有:
while (userInput == 1) { functionObj.position(4); functionObj.print(); } //end while
但 userInput 不会被修改,因此您将遇到一个非结束循环。
userInput