2013-03-14 128 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