2013-03-14 130 views
0

這發生在循環索引爲ij的兩個循環內。如果語句邏輯 - 對象數組

i表示正在檢查的對象,j是包含前五個numshares和其他數組中相關買方名稱的數組。這是一個任務的一部分,所以我非常相信這個結構。

  • tArray:包含numSharesbuyerName作爲每個對象的屬性的對象的陣列。
  • calcstring:包含買家名稱
  • calctotal:包含的股票買家名稱金額(numshares

我發現具有最高numshares五個買家的名字,並將它們存儲1 0 ]至5 [4]

然而通過I實現了程序步進時說numshares高於calctotal[1]上的迭代,而不是推動每個元件陣列向下和插入numshares

calctotal[j+1] = tVar剛剛替換calctotal[2]而不是移動calctotal[2]calctotal[3]

有誰知道如何解決這個問題呢?

我要再說一遍,我不能用向量等

if(tArray[i].numShares > calcTotal[j]) 
{ 
    int tVar = calcTotal[j]; 
    string tStr = calcString[j]; 

    calcTotal[j+1] = tVar;     
    calcString[j+1] = tStr; 

    calcTotal[j] = tArray[i].numShares; 
    calcString[j] = tArray[i].buyerName; 
    break; 
} 

回答

1

要改變陣列下來的一切,你從下往上需要循環和單元j到後到來陣列中分配給每個元素它之前的元素的值。如果j到達此循環時爲4,則不會有任何向下移動,所以它不會執行任何操作,並且calcTotal [4]將被簡單地覆蓋。

if(tArray[i].numShares > calcTotal[j]) 
{ 
    for (int k = 4; k > j; k--) { 
     calcTotal[k] = calcTotal[k - 1]; 
     calcString[k] = calcString[k - 1]; 
    } 

    calcTotal[j] = tArray[i].numShares; 
    calcString[j] = tArray[i].buyerName; 
    break; 
} 
+0

太棒了 - 你的寶石:) – user2075995 2013-03-14 17:06:11

+0

很高興我可以幫助:) – jonhopkins 2013-03-14 17:07:08