计算两个数组C++中匹配元素的数量
Count the number of matching elements in two arrays C++
我正在为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
仅在函数中扮演局部变量的角色。
阅读以下关于matches
不工作的原因:http://www.cs.utsa.edu/~wagner/CS2213/swap/swap.html(在类似设置中)
由于这是一项家庭作业,我将尝试在不给出解决方案的情况下指出错误。
for循环的形式是:
for (INIT; COND; STEP) {
BODY;
}
相当于:
INIT;
while (COND) {
BODY;
STEP;
}
按照你的方式,你的INIT是count < SIZE
,它什么都不做。您的"COND"是count++
,它在第一次迭代时返回0。正如您所知,在布尔值的上下文中,0是false。因此,您的for循环体根本没有被执行。
此外,不应将matches
作为参数传递。它应该是用0初始化的局部变量。
您可能没有使用返回值。将sig更改为:
int matchCounter(int lottery[5], int user[5], int SIZE)
{
matches = 0;
并确保您的电话是:
matches = matchCounter(lottery, user, 5);
如果你需要一个连续的总和,请使用:
matches += matchCounter(lottery, user, 5);
在任何情况下,matchCounter都不在乎运行总数是多少,那么为什么要把它传进来呢?
此外,您可能需要先对列表进行排序。
也许这会有所帮助:
int matches=0;
for(int i=0;i<ARRAY.SIZE;i++) {
for(int j=0;j<ARRAY.SIZE;j++) {
if(arr1[i]==arr2[j]) {
matches++;
arr2[j]=NULL;
}
}
}
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 使用不带参数的函数访问结构元素
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- C++如何通过用户输入删除列表元素
- lower_bound()返回最后一个元素
- 基于多个条件处理地图中的所有元素
- 调整大小后指向元素值的指针unordered_map有效?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 使用函数"remove"删除重复元素
- 具有最大子序列大小的序列,每个元素都相同
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将元素添加到数组的线程安全函数?
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- 我想访问std::unique_ptr中的一个特定元素
- 如何通过 getter 函数删除矢量的元素?
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 从控制台中删除最后打印的元素
- 擦除while循环中迭代的元素