[問題] 不清楚哪邊有誤
開發平台(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:44, 3F
→
10/30 07:50, , 4F
10/30 07:50, 4F
→
10/30 11:48, , 5F
10/30 11:48, 5F