我正在为自己创建一个程序,以查找和显示来自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
答案 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
}
}