[英]Comparing two arrays and creating third array with common elements
我需要比較兩個數組並輸出另一個顯示常見元素的數組。 我期待的代碼輸出是:0000056789。將不勝感激。
#include <iostream>
using namespace std;
const int CE = 10;
const int TOP = CE-1;
int iArr1[CE]={0,1,2,3,4,5,6,7,8,9};
int iArr2[CE]={5,6,7,8,9,10,11,12,13,14};
int iArr3[CE]={0,0,0,0,0,0,0,0,0,0};
void main()
{
int i;
int j;
int iCarr3 = 0;
for(i=0; i<=TOP; i++)
{
for (j=0; j<=TOP; j++)
{
if (iArr1[i]==iArr2[j])
{
iCarr3++;
iArr3[iCarr3]=iArr2[j];
}
}
}
cout << iCarr3 << endl;
cout << iArr3;
getchar();
}
您正在打印陣列的地址
打印數組的元素
for (int i = 0; i < size; i++) // keep track of the size some how
cout<<iArr3[i]<<" ";
PS:考慮首先對數組進行排序,如果iArr1[i] > iArr2[j]
那么你就不需要掃描eavh pass上的所有元素了
C ++在標准庫中有一個set_intersection
算法 :
#include <iostream>
#include <algorithm>
int main()
{
const int CE = 10;
int iArr1[CE] = {0,1,2,3,4,5,6,7,8,9};
int iArr2[CE] = {5,6,7,8,9,10,11,12,13,14};
int iArr3[CE] = {0,0,0,0,0,0,0,0,0,0};
std::set_intersection(std::begin(iArr1), std::end(iArr1),
std::begin(iArr2), std::end(iArr2),
std::begin(iArr3));
std::copy(std::begin(iArr3), std::end(iArr3), std::ostream_iterator<int>(std::cout, " "));
}
5 6 7 8 9 0 0 0 0 0
如果您的數組尚未排序,您可以先將數據放入std::set
,因為std::set_intersection()
需要對輸入進行排序。
好的,我希望這不是功課。 你擁有它的方式,輸出將是5678900000.輸出可以根據需要更改你的代碼:
for(i=0; i<=TOP; i++)
{
for (j=0; j<=TOP; j++)
{
if (iArr1[i]==iArr2[j])
{
iArr3[iCarr3]=iArr2[j];
}
}
iCarr3++;
}
然后為輸出執行此操作:
for(int k = 0; k <= iCarr3; k++)
std::cout << iArr3[iCarr3] << " ";
在對數組進行排序時,請使用std::set_intersection
。 否則你只需要先std::sort
它們進行std::sort
。
但是永遠不要忘記使用STD庫,代碼更加緊湊和可讀......而且大多數時候你會帶來更多的錯誤和更快的速度。
#include <algorithm>
#include <iostream>
#include <iterator>
const size_t CE = 10;
int iArr1[CE]={0,1,2,3,4,5,6,7,8,9};
int iArr2[CE]={5,6,7,8,9,10,11,12,13,14};
int iArr3[CE]={0,0,0,0,0,0,0,0,0,0};
int main(int argc, char const *argv[])
{
auto end_elemnt =
std::set_intersection(iArr1, iArr1 + CE,
iArr2, iArr2 + CE,
iArr3);
std::copy(iArr3, end_elemnt, std::ostream_iterator<int>(std::cout, ", "));
return 0;
}
這是輸出:
$ ./a.exe
5, 6, 7, 8, 9,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.