Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算两个数组C+中匹配元素的数量+; 我正在为COMP SCI I做作业,并且我尝试了在互联网上和在教科书中所能找到的所有内容,试图计算两个C++数组中匹配元素的数量。我根本找不到方法让我的代码计算两个相同大小(相同值,相同位置)的数组中匹配元素的数量。例如,如果array1有5,4,3,2,1,而array2有1,2,3,4,5,则有一个匹配元素,即3。如何让我的代码执行这个看似简单的任务_C++_Arrays_Function - Fatal编程技术网

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

计算两个数组C+中匹配元素的数量+; 我正在为COMP SCI I做作业,并且我尝试了在互联网上和在教科书中所能找到的所有内容,试图计算两个C++数组中匹配元素的数量。我根本找不到方法让我的代码计算两个相同大小(相同值,相同位置)的数组中匹配元素的数量。例如,如果array1有5,4,3,2,1,而array2有1,2,3,4,5,则有一个匹配元素,即3。如何让我的代码执行这个看似简单的任务,c++,arrays,function,C++,Arrays,Function,到处都找不到答案。我的教科书只演示了如何看数组是否匹配,而不计算匹配的数目,而且我还没有找到任何关于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])

到处都找不到答案。我的教科书只演示了如何看数组是否匹配,而不计算匹配的数目,而且我还没有找到任何关于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
int匹配计数器(int彩票[5],int用户[5],int匹配,int大小)
{
整数计数=0;
用于(计数<大小;计数++;)
{
if(彩票[计数]==用户[计数])
{
匹配++;
}
}
返回比赛;
}//结束匹配计数器

顺便说一下,大小是一个等于5的常数。看起来这应该是可行的,但是每次我运行这个程序时,它都会显示0个匹配项,即使有一些匹配项。如果有人能帮我,我将永远欠你的债。说真的,肯定有一些非常简单的事情我就是看不到。提前感谢您的帮助。

您的
for
语句有误。试试这个:

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

matches = matchCounter(lottery, user, 5);
否则,函数
matchCounter
的返回值将被忽略,而
int matches
仅在函数中扮演局部变量的角色


阅读以下内容,了解
匹配项不起作用的原因:(在类似设置中)

您可能没有使用返回值。将sig更改为:

int matchCounter(int lottery[5], int user[5], int SIZE)
{
    matches = 0;
并确保您的电话:

matches = matchCounter(lottery, user, 5);
如果您需要一个运行总和,请使用:

matches += matchCounter(lottery, user, 5);
在任何情况下,matchCounter都不关心运行总数是多少,那么为什么要传递它呢


另外,您可能需要先对列表进行排序。

因为这是一个家庭作业,我将尝试指出错误,但不给出解决方案

for循环的形式为:

for (INIT; COND; STEP) {
    BODY;
}
这相当于:

INIT;
while (COND) {
    BODY;
    STEP;
}
按照您的方式,您的INIT是
count
,它什么都不做。您的“COND”是
count++
,它在第一次迭代时返回0。您可能知道,在布尔值的上下文中,0为false。因此,根本没有执行for循环体

此外,不应将
匹配项作为参数传递。它应该是一个用0初始化的局部变量。

这可能会有帮助:

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;
       }
   }
}
int匹配=0;

for(int i=0;iStill不起作用,即使是以您列出的格式。可能我的代码中的其他地方有问题。这里是指向我的源代码的链接:@user1840483将第50行更改为
matches=matchCounter(彩票、用户、匹配、大小)
成功了。非常感谢。@user1840483如果您认为这没问题,请单击左侧的复选标记接受它作为答案。Thx:-)否决票有点苛刻。他说他总是打印0,并且没有显示函数是如何调用的。这是值得一查的。@XiaoJia,谢谢你。我认为不管是谁投了反对票,他们可能已经编程太久了,他们不记得学习C是什么感觉。几乎每个人在开始时都会犯这样的错误。祝你好运。另外,问题中的代码没有编译。我很确定你没有“完全”尝试过。你应该从这个问题中删除“类”和“家庭作业”标记。“class”标记指的是编程结构,而不是学校/大学的类。“家庭作业”标签已过时,正在删除过程中,请参阅:了解更多详细信息。
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;
       }
   }
}