奇妙な理由で、変数「角度」は、ループが終了しても 0 にリセットされません。すべての数学は c = sqrt(a^2 + b^2 - 2abCos(theta)) を計算するだけです。ロボットはすべての数学を 1 行で実行するわけではありません。完全なコードでは、a と b は両方とも変化する変数であり、超音波センサー入力に基づいています。
サブは 3 回まで呼び出すことができ、角度変数はサブが呼び出されるたびに 0 から開始する必要があります。
float angle = 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();
}