2014-03-19 17 views
0

我有10個元件的陣列,並且我需要使該陣列變成其移動平均等效。在靜態數組移動平均用C

使用每次3個元素(在索引0-2,然後1-3和依此類推,直到從10然後回到0和索引1的元素例如平均,使新的陣列具有恰好10個元素爲好) 。

什麼是這個最好的辦法,而不使用指針來包裝陣列周圍(環形緩衝器)。

+1

所以......到目前爲止......你叫什麼方法呢? –

+0

請澄清。所以avg(0-2)將是新數組的元素0,avg(1-3)元素1,avg(2-4)元素2,依此類推? – mangusta

+0

@mangusta是的,這是正確的 – user1397215

回答

1

只是做一些邊界檢查和代碼包索引。

下面的實例代碼可以更高效,但它寫成這樣的清晰度(排序)。也可能有一些小錯誤,因爲我輸入到StackOverflow而不是編譯它。

int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 
int averages[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 

for (int i = 0; i < 10; i++) 
{ 
    int a = i; 
    int b = i + 1 > 9 ? i - 10 + 1; 
    int c = i + 2 > 9 ? i - 10 + 2; 

    int count = array[a] + array[b] + array[c]; 
    int average = count/3; // note this will truncate any decimal part 

    averages[i] = average; 
} 
+0

分配b和c的語法錯誤。你認爲我可以使用類似模塊操作符的東西嗎?當我變成9歲的時候? – user1397215

+0

使用b =(i + 1)%10而不是工作正常 – user1397215

+0

是 - 更好。當時沒有想到這一點。 – Gigi