C++ 需要帮助从我的阵列中排除某些内容吗
我需要以利润递增的顺序(从最低利润到最高利润)输出盈利的摊位(如果他们盈利)。当我运行我的程序时,它以递增的顺序输出,但只排除一个<0的利润实例,并输出其余的利润实例。我做错了什么 下面是我用来排除利润<0的摊位的代码C++ 需要帮助从我的阵列中排除某些内容吗,c++,arrays,sorting,C++,Arrays,Sorting,我需要以利润递增的顺序(从最低利润到最高利润)输出盈利的摊位(如果他们盈利)。当我运行我的程序时,它以递增的顺序输出,但只排除一个
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--;
}
}