2013-02-10 59 views
0

我有一個包含12個不同趨勢線的圖。我想要通過添加在一起的所有趨勢線12的值,象這樣以產生單一的趨勢線:爲c中的一組趨勢線指定不同的權重

for (i = 0, cumulativeTrendValue = 0; i < 12; ++i) 
{ 
    cumulativeTrendValue += trendLine[i]; 
} 

我再喂這個cumulativeTrendLine的值到另一個函數。 這很簡單。但是現在我想通過 爲這12個趨勢線中的每一個分配3個不同權重中的1個變體。例如,第一個累計趨勢線將通過爲每個趨勢線分配權重1來創建; 接下來將通過爲第一個趨勢線分配權重2創建,並將1到 放置在趨勢線等等。

現在我確定這已經被問及在這裏回答,但我花了2小時 試圖找到在c中的實現,但不能。 (這是不是作業,如果你想知道你可以看看我在過去幾年的其他問題,以確認這一點。)

所以,我的問題是:什麼關鍵字可以用來找到哪裏這個問題以前已經得到解答。或者,如果你今天特別靜下心來,你能提供一個關於SO的問題/答案的鏈接。

+0

我不知道如果我理解你的問題,但我猜你正在尋找的期限爲[線性規劃(http://en.wikipedia.org/wiki/Linear_programming)。 – Dariusz 2013-02-10 17:41:09

+0

那麼,爲什麼不簡單'cumulativeTrendValue + = weight * trendLine [i];'? – 2013-02-10 17:43:18

回答

1

對我來說,最明顯的解決方案是爲權重添加另一個陣列,以匹配tredLine陣列。

但是,如果您希望按照問題中概述的算法執行此操作,您可以在當前的外部有另一個循環,並在舊的內部循環中有一個計數器。事情是這樣的:

for (weight = 1; weight < 12; weight++) 
{ 
    int currentWeight = weight; 

    for (i = 0, cumulativeTrendValue = 0; i < 12; i++) 
    { 
     cumulativeTrendValue += trendLine[i] * currentWeight; 

     if (currentWeight > 1) 
      currentWeight--; 
    } 

    /* Use cumulativeTrendValue someway */ 
}