2013-03-12 54 views
0

在我的代碼中,我有一個對象數組 - tArray。
我試圖找到擁有前五名總數'份額'的'買家名稱',
calctotal和計算字符串數組協同工作以存儲買家及其總價值。C++ - 爲一個整數數組添加新值

但是,我在運行時逐步完成了代碼,我的代碼基本上替換了循環中當前'numshares'的較小值。這意味着,即使剛剛被替換的買家再次出現,他的總額也開始增加,並且不會被添加,這是我想要的。

我該如何更改此代碼,以便發現較大的值時,較小的值會進一步向下推入數組中而不會被替換?

謝謝 - 我必須解決這個問題(任務)的'格式',所以實現功能是目標,所以我可以進步。

所以,本質上是if語句是問題的第二在於:

for (int i = 0; i<nTransactions; i++) 
{ 
    //compares with arrays 
    for(int j =0; j<sSize; j++) 
    { 
     if(tArray[i].buyerName == calcString[j]) 
     { 
     calcTotal[j] += tArray[i].numShares; 
     break; 
     } 
     else{ 
       //checks if shares is great then current total then replaces 
       if(tArray[i].numShares > calcTotal[j]) 
       { 
        calcTotal[j] = tArray[i].numShares; 
        calcString[j] = tArray[i].buyerName; 
        break; 
       } 
      } 
    } 
} 
return calcString; 
} 
+0

「我將如何更改此代碼,以便在發現較大的值時將較小的值向下推入陣列並且不會被替換?」這聽起來像你在排序數組。這真的是你想要做什麼,或者你是否試圖根據一些標準簡單地搜索數組? – 2013-03-12 18:55:08

+0

是的,基本上是作爲一個新的更大的價值被發現說第二個循環的第三個迭代我需要而不是剛剛寫過目前的值,我需要它插入。希望這會有所幫助 – user2075995 2013-03-12 18:56:56

+0

如果您正在進行搜索,我建議您僅將「迄今爲止發現的最大」作爲單獨變量進行跟蹤,可能只是對arrray的索引。 – 2013-03-12 18:59:04

回答

0

好像你正在努力尋找最大總計只盯着1個交易一次。您需要先彙總所有買家的總計。然後找到5個最高總數是一件簡單的事情。

+0

我需要對問題進行編程,以便可以容納1000個不同的買家 - 因此,爲每個買家加起來的總數看起來並不有效,這也是我們的判斷。老實說:我打了一堵牆:/ – user2075995 2013-03-12 18:59:23

+0

@ user2075995我看不出你怎麼能確定5個最大而沒有保持所有人的運行計數。這裏的訣竅就是保持所有人都在運行,同時在單次迭代中以單獨結構同時跟蹤5個最大值。 – zdan 2013-03-12 20:05:31