[英]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.