由于一些奇怪的原因,变量"角度"循环结束时不会重置为0。 所有的数学计算只是计算c = sqrt(a ^ 2 + b ^ 2 - 2abCos(theta)),机器人不会在一行中完成所有数学运算。 在完整的代码中,a和b都是变化的变量,并且基于超声波传感器输入。
sub可以被调用最多3次,每次调用sub时,angle变量需要从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();
}
答案 0 :(得分:2)
因为float angle
是calculate方法的本地方法,并且在全局范围内隐藏了int angle
。 int angle
未初始化为任何内容。
答案 1 :(得分:0)
你在repeat(2)循环中有一个未初始化的变量。
float angle = angle + 3;