我正在为 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/