看板 C_and_CPP 關於我們 聯絡資訊
原文吃光光 問題又來了 如果想把5x5矩陣 變成一個 N X N 的亂數矩陣 我修改了之前的程式碼 可是又失敗了 程式碼如下 int i, j, k, n; int a[n][n]; int size = n*n; int *num = new int[size]; printf("請輸入所要產生亂數矩陣 NXN 之大小\n"); scanf("%d",&n); srand(time(NULL)); for(i = 0 ; i < size ; i++) { num[i] = i + 1; } for(i = 0 ; i < n ; i++) { for(j = 0 ; j < n ; j++) { k = rand() % size; a[i][j] = num[k]; num[k] = num[--size]; } } delete [] num; 然後編譯的時候又出現了程式出現發生問題,必須關閉....... 請問各位大大 是哪裡出了問題? 還有如何把一個未知數目的矩陣 傳入副程式呀 例如 void search(int a [][這裡不是要填已知的數目嗎?]) 好多問題~"~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.13.125
VictorTom:1. 你的n還沒被輸入你就已經要拿來開array了. 10/10 14:54
VictorTom:2. a陣列要動態的開[n][n], 一樣要用動態配置的.... 10/10 14:54
VictorTom:3. 傳入array, 最簡單的方式就是傳它的頭的address, 然 10/10 14:55
VictorTom: 後另外傳入有多長的size可以用. 10/10 14:55
nt827:產生亂數矩陣以解決,傳入副程式還在嘗試~"~ 10/10 15:02
VictorTom:老實說我覺得你不把它變成一維的傳進去, 要搞動態多維的 10/10 15:07
VictorTom:會變得很麻煩, 因為動態多維在寫二維以上指標時你沒辦法 10/10 15:08
nt827:不知道該怎麼做...可以教我嗎? 10/10 15:08
VictorTom:在compile time時知道指標要怎麼寫, 再者, 動態配置的多 10/10 15:08
VictorTom:維陣列你也不能保證其連續性. 10/10 15:09
VictorTom:最簡單的方式, 把它們變成一維陣列再傳. 我不明白你的 10/10 15:09
VictorTom:search()非收二維陣列不可的理由; 非要用多維, 目前想到 10/10 15:10
VictorTom:比較簡單的作法就是, 跑迴圈分多次傳, 每次也只傳一維. 10/10 15:11
VictorTom:非要一次搞傳動態多維陣列, 有請板上其他強者解答Orz 10/10 15:11
nt827:您的意思是在把它變回一維在傳? 我把他傳進去的目的是要 10/10 15:12
nt827:行 列 跟 對角線相加 這樣可以做得出來吧... 10/10 15:13
VictorTom:基本上, 把陣列的頭和n傳進去, 一維陣列也可以用數學的 10/10 15:17
VictorTom:方式算出行/列/對角等陣列index; 動態二維就是傳head** 10/10 15:18
VictorTom:進去再搞吧我想@_@" 10/10 15:19