c++ - 计算两个数组中匹配元素的个数 C++

标签 c++ arrays function

我正在为 Comp Sci I 做家庭作业,我尝试了所有我在互联网上和教科书中能找到的东西,试图计算两个 C++ 数组中匹配元素的数量。我根本找不到一种方法让我的代码计算两个相同大小(相同值,相同位置)的数组中匹配元素的数量。例如,如果 array1 有 5、4、3、2、1,而 array2 有 1、2、3、4、5,则有一个匹配元素 3。如何让我的代码执行这个看似简单的任务?

无法在任何地方找到答案。我的教科书只展示了如何查看数组是否完全匹配,而没有计算匹配的数量,而且我还没有找到任何其他人对 C++ 有这个确切的问题。

到目前为止,这是我的功能:

int matchCounter(int lottery[5], int user[5], int matches, int SIZE)
{
    int count = 0;

    for (count < SIZE; count++;)
    {
        if (lottery[count] == user[count])
        {
            matches++;
        }
}

    return matches;
} // end matchCounter

顺便说一句,SIZE 是一个等于 5 的常数。看起来这应该可行,但每次我运行该程序时,它都会显示 0 个匹配项,即使有一些匹配项也是如此。如果有人能帮助我,我将永远欠你的债。说真的,一定有一些我只是没有看到的非常简单的东西。感谢您提前提供帮助。

最佳答案

您的 for 语句是乱码。试试这个:

int matchCounter(int lottery[5], int user[5], int matches, int SIZE)
{
    for (int count = 0; count < SIZE; count++)
    {
...

为什么你的程序总是失败:count++被放在了for循环中条件的位置,所以每次这个for 循环被执行,count 被评估并认为是条件,然后 count 增加 1。但是,每次 count 开始从 0 开始(如 int count = 0;),因此 for 循环实际上永远不会执行,并且 matches 保持为零。

编辑:

在您的源代码中,您没有使用返回值,@jimhark 也建议这样做。将函数签名更改为:

int matchCounter(int lottery[5], int user[5], int SIZE)

并调用:

matches = matchCounter(lottery, user, 5);

否则,您的函数matchCounter 的返回值将被忽略,而int matches 仅在函数中扮演局部变量的角色。

阅读此内容了解为什么匹配 不起作用:http://www.cs.utsa.edu/~wagner/CS2213/swap/swap.html (在类似的设置中)

关于c++ - 计算两个数组中匹配元素的个数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13484545/

相关文章:

Java 数组中 max 和 min 的代码

php - 如何在函数的第二个参数中重用函数的第一个参数?

python - 为什么 python `any` 返回一个 bool 而不是值?

python - 将代码包装在函数中时是否会提高内存效率?

c++ - std::vector<T> 编译错误 "T cannot appear in a constant-expression"

c++ - 是否有任何自动化的方法来实现后构造函数和预析构函数调用虚拟方法?

php - 对象像一个数组? (PHP)

javascript - 连接数组和整数的数组的最佳方法

c++ - 软件设计 : Too many classes?

c++ - CEdit 数字验证事件 C++ MFC