Как сбросить переменную обратно в 0 после использования в цикле в NXC

По какой-то странной причине переменная "угол" не будет сброшена до 0, когда цикл закончится. Вся математика - это просто вычисление c = sqrt(a^2 + b^2 - 2abCos(theta)), робот не выполнит всю математику в одной строке. В полном коде a и b обе являются переменными переменными и основаны на вводе ультразвукового датчика.

Подпрограмма может вызываться до 3 раз, и переменная угла должна начинаться с 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();
}

2 ответа

Так как float angle является локальным для метода расчета и скрывает int angle в глобальном масштабе. int angle не инициализируется ни к чему.

У вас есть неинициализированная переменная в цикле repeat(2).

float angle = angle + 3;
Другие вопросы по тегам