簡體   English   中英

將2D數組轉換為1D

[英]converting a 2D array into 1D

這是2D數組a,b,c的代碼:

    #include <stdio.h>

    int main(){
       int a[2][2]=
       {
         {1, 1},
         {2, 2}
       };

        int b[2][2]=
        {
          {1, 1},
          {2, 2}
        };

        int c[2][2]=
        {
          {1, 1},
          {2, 2}
        };

        //Loop for 2D
        int i,j,k, n=2;
        for (i = 0; i < n; i++) {
            for (j = 0; j < n; j++) {
                for (k = 0; k < n; k++) {
                    c[i][j] += a[i][k] * b[k][j];
                    printf("%i ",c[i][j]);
                }
            }
        }
    }

結果是:2 4 2 4 4 8 8 8

我編寫了這段代碼,將數組c [i] [j]轉換為一維數組。 運行后,我沒有得到相同的結果。

//Loop for 1D

    int i,j,k, n=2, result[50];
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            for (k = 0; k < n; k++) {
                result[k] = c[i][j];
                result[k] += a[i][k] * b[k][j];
                printf("%i ", result[k]);
            }
        }
    }

對於此循環,結果為:2 3 2 3 4 6 4 6

也許您想要一維數組的索引i+n*j

int i,j,k, n=2, result[50];

for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
        result[i+n*j] = c[i][j];
        for (k = 0; k < n; k++) {
            result[i+n*j] += a[i][k] * b[k][j];
            printf("%i ", result[i+n*j]);
        }
    }
}

c [i] [j]在第二個中不變。 但在第一個中已更改。

創建一個全局數組作為大小為4 * m的計算數組,其中m是2x2矩陣的數量。 然后使用do while循環,其中循環計數器變量用於計算一組四個元素的指針。 將該指針傳遞給一種方法,該方法以從左到右的方式逐行提取2x2矩陣元素到全局數組中。 在方法中使用引用指針,但不要在方法中增加指針。 返回該方法后,如果有更多組的4個元素要處理,則重新計算指針並處理下一個2x2矩陣。 此刻我的電腦壞了,所以我可以用代碼描述它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM