由于一些奇怪的原因,当循环结束时,变量“角度”不会重置回0。所有的数学运算只是计算c= sqrt(a^2 + b^2 - 2abCos(theta)),机器人不会在一行中完成所有的数学运算。在完整的代码中,a和b都是变化的变量,并且都基于超声波传感器输入。
sub最多可以被调用3次,并且每次调用sub时角度变量都需要从0开始。
我试着把浮动角度= 0;或者只是角度= 0;放在每个可以想象的地方,但都不起作用。我甚至尝试过在多个地方使用int angle = 0;。
int angle, a, b, c, csqr, theta, cosTheta, aSqrd, bSqrd, atmb, twoab;
#define pi 3.14159265359
sub calculate()
{
repeat(2)
{
float a = 172.42;
float angle = angle + 3;
float theta = ((angle)*(pi/180));
float b = 172.42;
float cosTheta = cos(theta);
float aSqrd = pow(a, 2);
float bSqrd = pow(b, 2);
float atmb = (a * b);
float twoab = (2 * atmb);
float csqr = ((aSqrd + bSqrd) - (twoab * cosTheta));
float c = sqrt(csqr);
NumOut(0,0,angle);
Wait(3000);
ClearScreen();
}
float angle = 0;
}
task main()
{
calculate();
ClearScreen();
calculate();
}发布于 2013-03-08 06:38:05
因为float angle对于calculate方法是局部的,并且在全局范围内隐藏了int angle。int angle未初始化为任何值。
发布于 2013-03-08 06:39:06
您在repeat(2)循环中有一个未初始化的变量。
float angle = angle + 3;https://stackoverflow.com/questions/15283160
复制相似问题