2013-03-07 2 views
0

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

Суб может быть вызван до трех раз, а переменная угла должна начинаться с 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

Это не C или C# ... –

+0

ОП сказал, что это NXC, http://en.wikipedia.org/wiki/Not_eXactly_C – tyh

+0

Название говорит C#/NXC - так же категорий этот пост указан ниже. Редактировать, это было ... –

ответ

2

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

+0

haha ​​wow, который был невероятно прост, просто удалил поплавок (на самом деле он не нужен), и теперь он отлично работает. Большое спасибо. – user2146307

0

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

float angle = angle + 3; 
Смежные вопросы