我的程序中的逻辑出了什么问题?

时间:2016-07-17 10:10:42

标签: c++ arrays

我的任务是创建一个标识数组中出现次数的函数,但是我没有得到正确的结果。这是我写的函数,我遗漏了程序的其余部分,因为它有效。

int countOccurences(int b[], int size, int x)
{
    int occ = x;
    for(int i = 0; i < size; i++)
    {
            if(b[i] == occ)
            occ++;

    }
    cout << occ << endl;

    return occ;
}

2 个答案:

答案 0 :(得分:1)

如果occ是出现次数,则应将其初始化为零而不是x

比较应该在b[i]x之间,而不是b[i]occ

而且,作为一个旁边(不影响你的实际逻辑),在实用程序函数中实际打印出返回值也很不寻常,这显然只是返回计数但它可能你在那里只是为了调试目的。

你应该确保你的缩进和使用括号在forif之间保持一致 - 这将使你的代码更容易维护。

这完全不是因为C ++在std::count()中拥有一个<algorithm>方法,可以为你实现而不需要编写一个函数来完成它(虽然这可能是一个教育问题,目的是学习如何对这样的事情进行编码,而不是使用容易制作的库函数来为你做繁重的工作。)

答案 1 :(得分:0)

int countOccurences(int b[], const unsigned int size, const int x)
{
    int occ = 0;

    for(unsigned int i = 0; i < size; i++)
    {
            if(b[i] == x)
            {
                occ++;
            }
    }
    std::cout << occ << std::endl;

    return occ;
}
  • occ应该从零开始
  • 您应该将b[i]x
  • 进行比较
  • 数组索引应为无符号
  • 为什么不是const-correct?
  • using namespace std;是不好的做法