看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 我想做一個陣列,此陣列各對應的元素值為 pow(i,M)+pow(j,M) i為列位置,j為行位置,且此陣列只做下三角與對角線部分。 然後比較各陣列元素的值,若一樣就挑出來。 我在一開始製作陣列就出問題了... 希望得到的正確結果: i j (i,j) 1 1 2 2 1 5 2 2 8 3 1 10 3 2 13 3 3 18 4 1 17 4 2 20 4 3 25 4 4 32 ..... 程式跑出來的錯誤結果: 能成功編譯,但數值部份怪怪的。當 N=4 時會變成 i j (i,j) 1 1 2 2 1 5 2 2 8 3 1 10 3 2 13 3 3 18 4 1 17 4 20 1 下面就沒出現了。 而 N=4 若改成3數值是正確的,但改成其他的正整數又會出錯。 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ 有問題的code: (請善用置底文標色功能) #include <stdio.h> #include <stdlib.h> #include <math.h> #define N 4 #define M 2 main() { int i, j, sum[N][N]; for (i=1; i<=N; ++i){ for (j=1; j<=i; ++j){ sum[i][j]=pow(i,M)+pow(j,M); printf("%5d\t%5d\t%5d\n",i,j,sum[i][j]); } } system("pause"); return 0; } 補充說明: 順便請教一下,若是用 C 想找出一個矩陣中哪些位置的元素是相同的, 是不是要寫 4 個迴圈去找呢? ex. A[5][6] for(int i=1; i<5; ++i) for(int j=1; j<6; ++j) for(int k=1; k<5; ++k) for(int l=1; l<6; ++l) if (A[i][j]==A[k][l] && i!=k) printf("%d\t%d\t%d\t%d\t%d\n", i, j, k, l); 還是有其他更好的方式?多謝指教! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.174.70
VictorTom:你的陣列存取爆了, int arr[10] 只有 arr[0] ~ arr[9]能 08/01 23:34
VictorTom:用, 陣列存取爆了寫到其他記憶體空間就天曉得會怎樣了@@ 08/01 23:35
Cidolfas:請問那應該怎麼設?還有為何N=2也錯,但N=3會對?謝謝 08/01 23:37
VictorTom:小弟我覺得我寫給你看的例子應該已經能解決你的第一個問 08/01 23:38
VictorTom:題了喔, 請你自己再想想; 會對可能只是運氣好而已.... 08/01 23:38
Cidolfas:謝謝,我在想想怎麼做 08/01 23:45