[問題] 不清楚哪邊有誤

看板C_and_CPP作者 (真心話)時間11年前 (2012/10/30 02:04), 編輯推噓1(104)
留言5則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) vc++ 2008 express 問題(Question): http://ideone.com/48mF0O 這是我課本上的程式碼 我照著打在編譯器上卻顯示有一大堆錯誤 可是我照置底建議的網站 把程式碼貼上去 他在網站上卻可以跑出結果 這......我有點被搞亂了 以下附上程式碼 #include<stdio.h> #include<stdlib.h> //輸出稀疏矩陣 void Sparse_print(int m, int n, int Sparse[m][n]) { printf("輸入稀疏矩陣:"); printf("\n"); int i, j; for(i = 0; i < m; i++){ for(j = 0; j < n; j++) printf("%3d ", Sparse[i][j]); printf("\n"); } } //壓縮處理 void Compress_process(int m, int n, int Sparse[m][n], int Compress[m][n]) { int i,j,k; k = 1; // 設定變數初值 Compress[0][0] = m; // 陣列sparse有m列 Compress[0][1] = n; // 陣列sparse有n行 Compress[0][2] = 5; // 陣列使用5個元素 for ( i = 0; i < m; i++ ) // 二維陣列的走訪 for ( j = 0; j < n; j++ ) if ( Sparse[i][j] != 0 ) // 判斷是否為非0元素 { Compress[k][0] = i; // 儲存列數 Compress[k][1] = j; // 儲存行數 //儲存元素值 Compress[k][2] = Sparse[i][j]; k++; // 下一列 } } //輸出壓縮結果 void Compress_print(int m, int n, int Compress[m][n]) { printf("輸出壓縮結果:"); printf("\n"); int i, j; for(i = 0; i < m; i++){ for(j = 0; j < n; j++) printf("%3d ", Compress[i][j]); printf("\n"); } } void main(void) { int Sparse[4][3] = {{5, 0, 0}, {0, 0, -1}, {3, 0, 0}, {0, 9, 10}}; int Compress[6][3]; //兩個矩陣相加 printf("===============程式描述=======================\n"); printf("= 程式名稱:ch3-7.4.c =\n"); printf("= 程式目的:將一稀疏矩陣轉換成壓縮的表示法 =\n"); printf("==============================================\n"); Sparse_print(4,3,Sparse); //輸入稀疏矩陣 Compress_process(4, 3, Sparse, Compress); //壓縮處理 Compress_print(6, 3, Compress); //輸出壓縮結果 system("PAUSE"); } ------------編譯器的錯誤訊息------------------- ------ 已開始全部重建: 專案: 3-7矩陣壓縮, 組態: Debug Win32 ------ 正在刪除專案 '3-7矩陣壓縮' 和組態 'Debug|Win32' 的中繼檔和輸出檔。 正在編譯... 3-7.cpp .\3-7.cpp(4) : error C2057: 必須是常數運算式 .\3-7.cpp(4) : error C2466: 無法配置常數大小為 0 的陣列,常數必須為大於 0 的整 數 .\3-7.cpp(4) : error C2057: 必須是常數運算式 .\3-7.cpp(4) : error C2466: 無法配置常數大小為 0 的陣列,常數必須為大於 0 的整 數 .\3-7.cpp(4) : error C2087: 'Sparse' : 遺漏註標 .\3-7.cpp(17) : error C2057: 必須是常數運算式 .\3-7.cpp(17) : error C2466: 無法配置常數大小為 0 的陣列,常數必須為大於 0 的 整數 .\3-7.cpp(17) : error C2057: 必須是常數運算式 .\3-7.cpp(17) : error C2466: 無法配置常數大小為 0 的陣列,常數必須為大於 0 的 整數 .\3-7.cpp(17) : error C2087: 'Sparse' : 遺漏註標 .\3-7.cpp(17) : error C2057: 必須是常數運算式 .\3-7.cpp(17) : error C2466: 無法配置常數大小為 0 的陣列,常數必須為大於 0 的 整數 .\3-7.cpp(17) : error C2057: 必須是常數運算式 .\3-7.cpp(17) : error C2466: 無法配置常數大小為 0 的陣列,常數必須為大於 0 的 整數 .\3-7.cpp(17) : error C2087: 'Compress' : 遺漏註標 .\3-7.cpp(37) : error C2057: 必須是常數運算式 .\3-7.cpp(37) : error C2466: 無法配置常數大小為 0 的陣列,常數必須為大於 0 的 整數 .\3-7.cpp(37) : error C2057: 必須是常數運算式 .\3-7.cpp(37) : error C2466: 無法配置常數大小為 0 的陣列,常數必須為大於 0 的 整數 .\3-7.cpp(37) : error C2087: 'Compress' : 遺漏註標 .\3-7.cpp(58) : error C2664: 'Sparse_print' : 無法將參數 3 從 'int [4][3]' 轉 換成 'int [][1]' 指向的型別沒有相關; 轉換必須有 reinterpret_cast、C-Style 轉換或函式樣 式轉換 .\3-7.cpp(59) : error C2664: 'Compress_process' : 無法將參數 3 從 'int [4][3]' 轉換成 'int [][1]' 指向的型別沒有相關; 轉換必須有 reinterpret_cast、C-Style 轉換或函式樣 式轉換 .\3-7.cpp(60) : error C2664: 'Compress_print' : 無法將參數 3 從 'int [6][3]' 轉換成 'int [][1]' 指向的型別沒有相關; 轉換必須有 reinterpret_cast、C-Style 轉換或函式樣 式轉換 .\3-7.cpp(62) : error C2562: 'main' : 'void' 函式傳回一個值 .\3-7.cpp(48) : 請參閱 'main' 的宣告 已將建置記錄儲存於 "file://d:\我的資料\我的文件\Visual Studio 2008\Projects\3-7矩陣壓縮\3-7矩陣壓縮\Debug\BuildLog.htm" 3-7矩陣壓縮 - 24 個錯誤,0 個警告 ========== 全部重建: 0 成功、1 失敗、 0 略過 ========== -- -- ◢ ∕  ̄ ̄\ =◥ /▅▅▅ 查理~ 給我腎臟~  皿 i \﹨ ◢ i \\﹨ 不可以嗎? ξ      CC| ̄ ̄i ζ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.242.20.240

10/30 02:06, , 1F
你要不要貼編譯器上的錯誤訊息上來看看?
10/30 02:06, 1F
※ 編輯: kattte 來自: 111.242.20.240 (10/30 02:15) ※ 編輯: kattte 來自: 111.242.20.240 (10/30 02:21)

10/30 02:39, , 2F
陣列大小不能用變數
10/30 02:39, 2F

10/30 07:44, , 3F

10/30 07:50, , 4F
VC 的編譯器比較嚴謹
10/30 07:50, 4F

10/30 11:48, , 5F
感謝!
10/30 11:48, 5F
文章代碼(AID): #1GZiKpie (C_and_CPP)