显示来自2个单独阵列的重复元素

时间:2019-04-24 02:59:40

标签: visual-c++

我正在为自己创建一个程序,以查找和显示来自2个单独数组的重复元素。 CPP是几年前的,所以重新回到它很生锈。我已经搜索并阅读了不同的板,但没有达到目标。这是我想要实现的目标:

从“ a”中获取所有元素,并将其与“ b”进行比较。如果“ b”中有重复的数字,请显示该数字。

我尝试使用int和double,但是每次都得到相同的结果。似乎代码正在为每个元素查找重复项,即使某些元素为2位数也是如此。

在下面的代码中,应该显示的数字是64。相反,我得到了;

找到重复项:-9.25596e + 0611

找到重复项:-9.25596e + 0612

找到重复项:-9.25596e + 0613

找到重复项:44

...等等。我知道我丢失了某些内容,并且可能未使用正确的单词组合来查找所需的内容。任何可能帮助的指针或链接将不胜感激。

#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
double dupi;
double dupj;

double a[5] = { 8, 22, 24, 38, 64 };
double b[5] = { 33, 47, 58, 59, 64 };

for (int i = 0; i < 5; ++i)
{
    for (int j = 0; j < 5; ++j)
    {
        if (a[i] == b[j])

            dupi = i;
            dupj = j;

cout << "\nDuplicate found: " << dupi << dupj << endl;
    }

    }

cin.get();

return 0;
}

找到重复项:64

2 个答案:

答案 0 :(得分:1)

dupi = i;仅在(a[i] == b[j])为true时执行;但是dupj = j;cout << "\nDuplicate found: "...是无条件执行的。您可能打算添加一对大括号。按照编写,您正在打印未初始化变量的值。

答案 1 :(得分:0)

如果有条件,则需要大括号。 否则它将打印dupi

的未初始化值

因为您需要重复的值,而不是索引,所以
应该使用dupi =a[i];而不是dupi = i;
应该使用dupi =a[j];而不是dupi = j;

for (int i = 0; i < 5; ++i)
{
    for (int j = 0; j < 5; ++j)
    {
        if (a[i] == b[j]){ //use braces so that code will hit only when condition is true

            dupi = i;   //should be a[i] or b[i]
            dupj = j;   //should be a[i] or b[i]

           cout << "\nDuplicate found: " << dupi << dupj << endl;
        }  //closing braces
    }   
}