我有两个数组,需要比较它们。将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}
}
答案 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];
}
}