C++ 需要帮助从我的阵列中排除某些内容吗

C++ 需要帮助从我的阵列中排除某些内容吗,c++,arrays,sorting,C++,Arrays,Sorting,我需要以利润递增的顺序(从最低利润到最高利润)输出盈利的摊位(如果他们盈利)。当我运行我的程序时,它以递增的顺序输出,但只排除一个

我需要以利润递增的顺序(从最低利润到最高利润)输出盈利的摊位(如果他们盈利)。当我运行我的程序时,它以递增的顺序输出,但只排除一个<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;

for(int i=0;i暂停[j].net){
失速tmp=失速[i];
档位[i]=档位[j];
档位[j]=tmp;
}
}
}
对于(int i=0;i当然,我的答案不是完整的答案,但我在代码上找到了主要问题

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

什么是“暂停”
?为什么不使用标准的容器和算法?是否允许您提前测试是否存在亏损的暂停,而不是首先将它们放入数组中?暂停是一个结构数组。还有一个原因是我不允许在作业中使用这些。将问题一分为二:有排序,有带过滤器的输出。你能自己为这两种东西中的一种或两种编写代码吗?也就是说,你能写一个循环,只输出有利可图的暂停,而不进行排序吗?是的,我有代码可以输出暂停而不进行排序。然而,当我尝试对其进行排序时,问题就开始了
// 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--;
        }
    }