比较两个数组并将差异答案放入另一个数组中

时间:2014-03-03 04:35:40

标签: c++ arrays

我有两个数组,需要比较它们。将P[p]中的每个元素与child1[q]中的每个元素进行比较。如果不匹配,则P[p]中的该元素将存储在另一个新数组中。我应该在哪里保留cout语句,以便将不匹配的数字输入另一个数组。

谢谢。

int P[ ]={3,7,6,5,2,4,1,8};
int child1[ ]={3,7,6,5,8,6,7,2};
// getting the missing numbers
for(int p=0;p< r;p++)    // here r is size of the array i.e.8
{
    for (int q=0;q< r;q++)
    {
        if (child1[q]==P[p])
        {
            p++;
        }
        q++;
    }
    cout<< P[p];      // i have a problem here.where should i keep this statement for getting the mismatched number into an another array
    int M[p]=P[p]; //the result must be M[2]={4,1}
}

4 个答案:

答案 0 :(得分:0)

if (child1[q]=P[p]);

我看到您尝试从P[p] to child1[q]分配值...没有比较,p每次都会更改,因为没有代码与if相关联..

检查以下代码..

if (child1[q]==P[p])
{
    p++;
}

答案 1 :(得分:0)

尝试这种方式:

int i=0;

   if (child1[q]!=P[p]);
     {
       cout<< P[p];   //<===Your cout statment goes here    
       M[i++]=P[p];
      }
   else
  {
   //do your increament
  }   

答案 2 :(得分:0)

如果您正在尝试这样的交叉检查:

P=     1 2 3
child1=4 5 6
Checking= (1,4),(1,5),(1,6),(2,4),(2,5),(2,6),....

试试这个:

int i=0;
for(int p=0;p<r;p++)
{
    for(int q=0;q<r;q++)
    {
        if (child1[q]!=P[p]) //Mismatch
        {
            cout<< P[p];  //Printing mismatched value
            M[i]=P[p];    //Assigned to another array called M[]
            i++;          //Increments index of array M[]
        }
    }
}

如果您要检查具有相同位置的值,请​​执行以下操作:

P=      1 2 3
Child1= 4 5 6
Checking= (1,4),(2,5),(3,6)

然后您不必使用2个for循环。

int i=0;
for(int p=0;p<r;p++)
{
    if (child1[p]!=P[p]) //Mismatch
    {
        cout<< P[p];    //Printing mismatched value
        M[i]=P[p];      //Assigned to another array called M[]
        i++;            //Increments index of array M[]
    }
}

答案 3 :(得分:0)

int P[]={3,7,6,5,2,4,1,8};
int child1[]={3,7,6,5,8,6,7,2};
std::vector<int> M;

for(int p=0; p < r; p++)
{
   bool found = false;
   for(int q=0; q < r; q++ )
   {
      if (child1[q]==P[p]);
      {
         found = true;
         break;
      }
   }
   if ( false == found )
   {
      cout<< P[p];
      M.push_back(P[p]);
   }
}

如果您不想std::vector<int>使用M,可以使用:

int P[]={3,7,6,5,2,4,1,8};
int child1[]={3,7,6,5,8,6,7,2};
int M[8];

int mCounter = 0;
for(int p=0; p < r; p++)
{
   bool found = false;
   for(int q=0; q < r; q++ )
   {
      if (child1[q]==P[p]);
      {
         found = true;
         break;
      }
   }
   if ( false == found )
   {
      cout<< P[p];
      M[mCounter++] = P[p];
   }
}