以兩種方式遍歷INT數組是一種機器人有趣代碼(以C爲單位)。以兩種方式遍歷INT數組
我有這樣一個陣列位置:int pos[] = {0, 45, 90, 135, 180, 135, 90, 45};
這些位置用於移動伺服電機。
45 90 135
\ | /
\ |/
\ |/
0 ----------- 180
在主loop()
我檢查距離的障礙,如果是< xx Cm
,直到它找到一個免費的方式(> xx Cm
)我伺服必須旋轉下一步(下一個數組位置)。
我主要是簡單:
int main (int argc, const char * argv[]) { for (;;) find(); }
和我的核心功能(發現)是這樣的:
void find() {
for (i=0; i<sizeof(pos); i++) // Traversing position array
{
distance = rand() % 7; // Simulate obstacle distance
move(pos[i]); // Simulate movements
if (i==sizeof(pos)) { i=1; } // Try to reset the "i" counter. PROBLEM!
if (distance<=5) continue; // Is there an obstacle?
sleep(2); // Debug sleep
find(); // Similar recursion
}
}
我不知道什麼是錯在此代碼,但我需要移動伺服直到沒有障礙。
例: 在90
位置,我覺得是一個障礙。我想從左到右循環數組,反之每一步控制距離。如果我找不到高速公路,print("ko")
其他print("ok")
。
如何修復此代碼以正常工作?
您的代碼有幾個問題,這可能會導致您的索引問題。你的'find'沒有原型,非常糟糕。你沒有給我們「我」的聲明。一個全局變量?什麼類型?所有'i','distance','pos'都應該是局部變量或函數的參數。 – 2011-06-14 12:13:47
@Jens,這是一個**模擬,而不是真正的代碼**。很顯然,缺少'雙距離'和'find'的原型,但解決問題並不重要!我手動寫這段代碼! – elp 2011-06-14 12:28:11