开发C++数组元素比较

dev C++ array elements comparison

本文关键字:比较 数组元素 C++ 开发      更新时间:2023-10-16

我想在两个arrays进行比较,我尝试了这种方式:

#include <iostream> 
using namespace std; 
int main(){ 
int v1[10] = {1, 5, 77, 3, 4, 0, 2, 6, 8, 9}; 
int v2[10] = {20, 18, 2, 3, 4, 0, 1, 9, 6, 8}; 
int i,l,c=0,n=0; 
//comparision
for(i=0; i<10; i++) 
{ 
    for(l=0;l<10;l++) 
    { 
        if ((v1[i] == v2[l]) && (c==0)) 
        { 
            cout << v1[i] << " e " << v2[l] << " are common" << endl; 
            c = 1; 
        } 
        else if((n==0) && (l==10)) 
        { 
            cout << v1[i] << " it s in only one array" << endl; 
            n = 1; 
        };
    } 
    c=0,n=0; 
} 
system("pause"); 
return 0; 
}
但它似乎不适用于不常见的元素,

该程序只向我显示常见元素,而不显示不常见的元素。我不明白为什么。有人可以帮助我吗?

提前感谢您的帮助。

您的l永远不能为 10,这是显示唯一元素的条件。循环将在 9 点停止。

我建议你只使用一个变量来标记唯一性。例如:

bool found = false;
for(i = 0; i < 10; i++) 
{ 
    for(l = 0; l < 10; l++) 
    { 
        if ((v1[i] == v2[l])) 
        { 
            cout << v1[i] << " e " << v2[l] << " are common" << endl; 
            found = true; 
        } 
        else if(!found && l==9) 
        { 
            cout << v1[i] << " it s in only one array" << endl; 
        }
    } 
    found = false; 
}

此外,如果想要稍微更改代码,则只能在内部循环之后进行检查:

for(int i = 0; i < 10; i++){
    bool found = false;
    for(int j = 0; j < 10; j++){ 
        if ((v1[i] == v2[j])){ 
            cout << v1[i] << " e " << v2[j] << " are common" << endl; 
            found = true; 
        }
    }
    if(!found){
        cout << v1[i] << " is in only one array" << endl; 
    }
}