我的代码中有一点问题。变量不想更改其值。你能说出原因吗? 这是我的代码:
vector<coordinate> rocks(N);
double angle;
double x, y;
// other code
while (x > 1.0 || x < -1.0 || y > 1.0 || y < -1.0) {
angle = rand() * 2.0 * M_PI;
cout << angle << endl;
cout << rocks[i - 1].x << endl;
cout << rocks[i - 1].y << endl;
x = rocks[i-1].x + r0 * cos(angle);
y = rocks[i-1].y + r0 * sin(angle);
cout << x << endl;
cout << y << endl << endl;
}
// other code
控制台上的结果是:
6.65627e + 09
0.99347
0.984713
1.09347
0.984713
1.16964e + 09
0.99347
0.984713
1.09347
0.984713
当你看到x的值时,y变量不会改变,而这是一个无限循环。有什么问题?你觉得怎么样?
答案 0 :(得分:12)
为什么要预测x
和y
进行更改?您为它们分配了不会改变的计算值吗?
rand() * 2.0 * M_PI
始终是2 * pi的倍数(就双数而言可以表示),因此cos(angle)
将为1,而sin(angle)
将为0。
答案 1 :(得分:0)
也许你的rand()函数没有定义。有时未能包含正确的标题会导致调用奇数默认rand,并且它可能始终返回相同的数字。这只是我的头脑,但我会检查这个方向。
实际上,我永远不会记得rand会发生这种情况,但是如果你不包含math.h,我想我已经看到它发生在三角函数中。虽然这可能是编译器特有的怪癖。
答案 2 :(得分:0)
angle
似乎非常大。我假设您要在angle
和0
之间生成2*pi
。检查rand()
是否返回0到1之间的数字,并检查M_PI
是什么。
如果这没有用,请通过添加更多cout