C++ 如何在数组中查找相交元素
谁能告诉我为什么我没有得到正确的解决方案。。几天前开始编程 有3个数组,如果元素较少,代码就可以工作。。idk有什么问题请给我解决方案谢谢 这是我的密码:-C++ 如何在数组中查找相交元素,c++,arrays,C++,Arrays,谁能告诉我为什么我没有得到正确的解决方案。。几天前开始编程 有3个数组,如果元素较少,代码就可以工作。。idk有什么问题请给我解决方案谢谢 这是我的密码:- int arr1[]={1,2,3,5,7,8,9,11,12,18}; int arr2[]={2,3,4,12}; int arr3[]={2,3,5,12,19}; int arr4[10]; int k=0; int x=0,y=0,z=0; while(arr3[z]!=19) { if(arr1[x]==arr2[y]
int arr1[]={1,2,3,5,7,8,9,11,12,18};
int arr2[]={2,3,4,12};
int arr3[]={2,3,5,12,19};
int arr4[10];
int k=0;
int x=0,y=0,z=0;
while(arr3[z]!=19)
{
if(arr1[x]==arr2[y] && arr2[y]==arr3[z])
{
arr4[k]=arr1[x];
cout<<" intersecting element found "<<arr4[k];
k++;
x++;y++;z++;
}
else if(arr1[x]<arr2[y])
{
x++;
}
else if(arr2[y]<arr2[z])
{
y++;
}
else
{
z++;
}
}
for(int i=0;i<k;i++)
{
cout<<endl<<" o/p "<<arr4[i];
}
intarr1[]={1,2,3,5,7,8,9,11,12,18};
int arr2[]={2,3,4,12};
int arr3[]={2,3,5,12,19};
int-arr4[10];
int k=0;
int x=0,y=0,z=0;
而(arr3[z]!=19)
{
如果(arr1[x]==arr2[y]&&arr2[y]==arr3[z])
{
arr4[k]=arr1[x];
cout您可以通过在另一个“for”循环中同时遍历所有数组来实现这一点
示例:-
int arr1[] = { 1,2,3,5,7,8,9,11,12,18 };
int arr2[] = { 2,3,4,12,5 };
int arr3[] = { 2,3,5,12,19 };
int arr4[10];
int index = 0;
for (auto i = 0; i < GetArraySize(arr1); i++)
for (auto j = 0; j < GetArraySize(arr2); j++)
for (auto k = 0; k < GetArraySize(arr3); k++)
if (arr1[i] == arr2[j] && arr2[j] == arr3[k])
{
arr4[index] = arr1[i];
index++;
cout << arr1[i] << " is an intersecting element!" << endl;
}
for (auto i = 0; i < index; i++)
cout << " o/p " << arr4[i] << endl;
int arr1[] = { 1,2,3,5,7,8,9,11,12,18 };
int arr2[] = { 2,3,4,12,5 };
int arr3[] = { 2,3,5,12,19 };
int arr4[10];
int index = 0;
for (auto &elem : arr1)
for (auto &elem2 : arr2)
for (auto &elem3 : arr3)
if (elem == elem2 && elem2 == elem3)
{
arr4[index] = elem;
index++;
cout << elem << " is an intersecting element!" << endl;
}
for (auto i = 0; i < index; i++)
cout << " o/p " << arr4[i] << endl;
这一行给出了数组的大小,如下所述:
如果编译器支持C++11,则可以使用基于范围的“for”循环,这比普通循环更容易阅读
如果要使用基于范围的“for”循环,它看起来像:-
int arr1[] = { 1,2,3,5,7,8,9,11,12,18 };
int arr2[] = { 2,3,4,12,5 };
int arr3[] = { 2,3,5,12,19 };
int arr4[10];
int index = 0;
for (auto i = 0; i < GetArraySize(arr1); i++)
for (auto j = 0; j < GetArraySize(arr2); j++)
for (auto k = 0; k < GetArraySize(arr3); k++)
if (arr1[i] == arr2[j] && arr2[j] == arr3[k])
{
arr4[index] = arr1[i];
index++;
cout << arr1[i] << " is an intersecting element!" << endl;
}
for (auto i = 0; i < index; i++)
cout << " o/p " << arr4[i] << endl;
int arr1[] = { 1,2,3,5,7,8,9,11,12,18 };
int arr2[] = { 2,3,4,12,5 };
int arr3[] = { 2,3,5,12,19 };
int arr4[10];
int index = 0;
for (auto &elem : arr1)
for (auto &elem2 : arr2)
for (auto &elem3 : arr3)
if (elem == elem2 && elem2 == elem3)
{
arr4[index] = elem;
index++;
cout << elem << " is an intersecting element!" << endl;
}
for (auto i = 0; i < index; i++)
cout << " o/p " << arr4[i] << endl;
intarr1[]={1,2,3,5,7,8,9,11,12,18};
int arr2[]={2,3,4,12,5};
int arr3[]={2,3,5,12,19};
int-arr4[10];
int指数=0;
用于(自动和电气:arr1)
用于(自动和电气2:arr2)
用于(自动和电气3:arr3)
if(elem==elem2&&elem2==elem3)
{
arr4[索引]=元素;
索引++;
对于给定的数组,您得到了什么样的解决方案?您是否尝试过调试代码以查看每次迭代中发生的情况?必填项:an。当您发布不完整的代码时,可能的答案将必须填入空格。因为他们通常知道自己在做什么,所以他们填入的空格可能会修复您在没有他们的情况下查找的错误建议:一行一行地检查程序,如果有必要的话,注意程序在哪里做了你意想不到的事情。你可能永远也找不到比调试器更高效的工具。bro对于给定的数组,它的工作非常完美d显示2、3和12,但如果我在array2中添加5,则只会将相交元素显示为2和3…而o/p应为2、3、5、12,我认为不应该出现这种情况。你确定在arr2中的4之后添加了5吗?是的,兄弟..请检查:-