gpt4 book ai didi

c++ - 需要帮助从我的数组中排除某些东西

转载 作者:行者123 更新时间:2023-11-28 04:16:22 24 4
gpt4 key购买 nike

我需要按照利润递增的顺序(最低利润到最高利润)输出盈利的摊位(如果他们盈利的话)。当我运行我的程序时,它以递增的顺序输出它,但只排除一个 < 0 的利润实例并输出其余的。我做错了什么?

下面是我用来排除利润 < 0 的摊位的代码

    for (int i = 0; i < n; i++){
if (Stalls[i].net < 0){
for (int j = i + 1; j < n; ++j){
Stalls[j - 1] = Stalls[j];}
n--;}

}

for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (Stalls[i].net > Stalls[j].net) {
Stall tmp = Stalls[i];
Stalls[i] = Stalls[j];
Stalls[j] = tmp;
}
}
}
for (int i = 0; i < n; i++)
of << Stalls[i].name << endl;

最佳答案

我的答案不是完整的答案,但我在代码上找到了主要问题。

# Remove negative items
for (int i = 0; i < n; i++)
{
if (Stalls[i].net < 0)
{
printf(" i = %d, %d\n", i, Stalls[i].net);
for (int j = i + 1; j < n; ++j)
{
// strcpy(Stalls[j - 1].name, Stalls[j].name);
// Stalls[j - 1].net = Stalls[j].net;
Stalls[j - 1] = Stalls[j];
}
n--;
}
}

这个函数有问题

如果data[-3, -2, -1, 0, 1, 2]
以上之后for循环,data[-2, 0, 1, 2, 2, 2]
但是,我们可以认为,data[0, 1, 2, 2, 2, 2]

原因:
-3 -2 -1 0 1 2

-3的索引是0,
Stalls[j - 1] = Stalls[j]; , -3替换为 -2 ,
-2移动到第 0 个位置,

但是,-2无法用 if (Stalls[i].net < 0) 检查,因为 i已经增加了

因此,-2仍然是

轻松回答:(未优化)

// Remove negative items
for (int k = 0; k < n; k++) // This is added loop
for (int i = 0; i < n; i++)
{
if (Stalls[i].net < 0)
{
printf(" i = %d, %d\n", i, Stalls[i].net);
for (int j = i + 1; j < n; ++j)
{
// strcpy(Stalls[j - 1].name, Stalls[j].name);
// Stalls[j - 1].net = Stalls[j].net;
Stalls[j - 1] = Stalls[j];
}
n--;
}
}

关于c++ - 需要帮助从我的数组中排除某些东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56512077/

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