0
我有一個包含類似以下值的整數指針數組b_members:數組條件語句:需要存儲的值不等於在指數值ç
1 2 4
我想找到b_members的值它們不等於循環內的特定值,並將它們存儲在另一個整數指針數組i_p中。
例如,在索引0的循環中,我想查找並存儲b_members中不等於1(即2和4)的兩個值。因此,對於第一次迭代
ip = 2 4
在第二次迭代我要存儲在IP 1和4,以
ip = 1 4
而在第三次迭代我想存儲1和2中的IP地址以便
ip = 1 2
我可以用下面的代碼在Matlab做到這一點,但我希望能夠做到這一點在C
b_members = [1 2 4];
for i = b_members
ip = b_members(b_members ~=i);
end
繼承人什麼我在C至今:
int *b_members;
int *i_p;
b_members = Get_b_members(B,j); // fills b_members with array like [1 2 4]
for(int i=0;i<B->Columns;++i){ // going through all of b_members
printf("%d ",b_members[i]);
// Finding b_members not equal to b_members[i]
for(int i2=0;i2<B->Columns;++i2){
if (b_members[i2] != b_members[i])
i_p = &b_members[i2];
}
} // End b_members for loop
我似乎無法得到它的工作方法得當,I_P只是越來越不再作爲循環的進行,我只希望它包含一次兩個整數。有沒有辦法做到這一點,就像我上面提供的Matlab代碼?任何幫助,將不勝感激。
更新:
使用Saurav薩胡的建議這個工作:
int **i_p = (int **)malloc(B->Columns * sizeof(int*));
int tmp;
for(int i=0;i<B->Columns;i++)
{
// Need to find b_members excluding b_members(i)
i_p[i] = (int *)malloc((B->Columns-1) * sizeof(int));
int idx = 0;
for(int jj=0;jj<=B->Columns;jj++)
{
if(i==jj) continue;
if(b_members[i] != b_members[jj])
{
i_p[i][idx++] = b_members[jj];
}
}
tmp = i;
}
for(int ii=0;ii<=tmp;++ii)
{
printf("\ti_p[%d] = ",ii);
for(int it=0;it<(B->Columns)-1;++it)
{
printf("%d ",i_p[ii][it]);
}
printf("\n");
}
printf("\n");
你打算如何處理輸入數組中的重複值?你還會添加它們嗎? –
我不認爲重複值很重要,如果b_members = [1 6 6],第一次迭代會給i_p = [6 6],第二次會給i_p = [1 6],第三次會給i_p = [1 6] 。 – user3716193