該程序正在「計算」數組的所有子集源。我需要將結果值存儲在另一個名爲polje的2D字段中。如果我只使用printf("%d %d %d ", source[i][0], source[i][1], source[i][2]);
,則代碼可以正常工作,但是當它試圖將所有內容複製到結果字段中時,它會失敗。我想我在索引數組polje中加入了一些錯誤的東西。存儲數組的子集
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
int f;
int i,j;
int source[2][3] = {{0,3,5},{3,4,2}};
int currentSubset = 3;
int polje[8][3];
for(i=0;i<8;i++){
for(j=0;j<3;j++){
polje[i][j]=0;
}}
int tmp;
while(currentSubset)
{
tmp = currentSubset;
for(i = 0; i<3; i++)
{
if (tmp & 1)
{
printf("%d %d %d ", source[i][0], source[i][1], source[i][2]); //writes out everything I want
polje[currentSubset][0]=source[i][0];
polje[currentSubset][1]=source[i][1];
polje[currentSubset][2]=source[i][2];
}
tmp >>= 1;
}
printf("\n");
currentSubset--;
}
for(i=0;i<8;i++){
for(j=0;j<3;j++){
printf("%d ", polje[i][j]);
}printf("\n");}
return (EXIT_SUCCESS);
}
輸出領域應該是:
0 3 5
3 4 2
3 4 2
0 0 0
0 3 5
0 0 0
0 0 0
0 0 0
但取而代之的則是:
0 3 5
3 4 2
3 4 2
0 0 0
*0 0 0*
0 0 0
0 0 0
0 0 0
'INT TMP; while(currentSubset) tmp = currentSubset;'對我來說看起來很糟糕。可以做得更簡單。 – wildplasser