gpt4 book ai didi

c++ - If 语句逻辑 - 对象数组

转载 作者:行者123 更新时间:2023-11-28 07:43:12 27 4
gpt4 key购买 nike

这发生在两个循环内,循环索引为 ij

i 表示正在检查的对象,j 是包含前五个 numshares 的数组和另一个数组中的关联买家名称。这是作业的一部分,所以我完全受制于这种结构。

  • tArray:包含 numSharesbuyerName 作为每个对象属性的对象数组。
  • calcstring:包含买家姓名
  • calctotal:包含买方姓名的股份数量(numshares)

我正在查找具有最高 numshares 的五个买家姓名并将它们存储在 1.[0] 到 5.[4]

然而,当逐步执行程序时,我意识到 numshares 在一次迭代中高于 calctotal[1],而不是将每个元素向下插入数组并插入 numshares

calctotal[j+1] = tVar 只是替换 calctotal[2] 而不是将 calctotal[2] 向下移动到 calctotal[3] 等等

有谁知道我该如何解决这个问题?

我应该再说一遍,我不能使用 vector 等

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;
}

最佳答案

要向下移动数组中的所有内容,您需要从下往上循环并将元素 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;
}

关于c++ - If 语句逻辑 - 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15415305/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com