我已經下載了代碼,它看起來是正確的(和運行):此代碼是如何正確的?
int (*oldMatrix)[NJ] = new int[NI][NJ];
int (*newMatrix)[NJ] = new int[NI][NJ];
/* initialize elements of old to 0 or 1 */
for (i=1; i<=NI; i++) {
for (j=1; j<=NJ; j++) {
x = rand()/((float)RAND_MAX + 1);
if(x<0.5) {
oldMatrix[i][j] = 0;
} else {
oldMatrix[i][j] = 1;
}
}
}
什麼我不明白:爲什麼oldMatrix和大小NI的newMatrix,而不是大小NJ的?
您使用哪種語言? – summea
C++。我認爲代碼的創建者犯了一個錯誤,我們不應該只寫int ** oldMatrix = new int [NI] [NJ]; int ** newMatrix = new int [NI] [NJ]; ? – user3346223
還有一個嚴重錯誤:C++中的數組索引是從零開始的。對於大小爲「NI」的數組,訪問元素「NI」肯定是一個錯誤。 (爲了比較,只要'NI> = 1',訪問'NI-1'就不會有問題。) – rwong