在下面的代码中,我有一个对象数组 - tArray
我试图找到排名前五的'num shares'的'买家名',
calctotal和calcstring数组协同工作以存储买方及其总价值。
但是,我在运行时已经完成了代码,我的代码实际上是替换了小于循环中当前“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 :(得分:0)
看起来你正试图找到最大的总数,一次只看一个交易。您需要先为所有买家汇总总计。然后找到5个最高总数是一件简单的事情。