→ killntd:不懂我的問題出在哪... 冏11/05 19:50
首先,你的這個 array 明明放的是 count*4 的資料
如你舉的例子,count=2時,你會輸入的是
1 2 3 4
5 6 7 8
那這樣那個 int array[count][3]; 就錯了
至少也要是 int array[count][4]; 才夠用
接下來,目前 C++ 在宣告 array 的時候,中括號 [這裡] 只能擺固定的常數
譬如說以下幾種寫法:
(1) int array[10][4];
(2) #define NUM 10
int array[NUM][4];
(3) const int NUM = 10;
int array[NUM][4];
但 C++ 目前還不允許 [這裡的值] 是一個會改變的變數
譬如你寫的
int count;
cin >> count;
int array[count][3];
這個 count 會隨著使用者的輸入而改變,而影響 array 實際的大小
這個東西叫做 VLA(Variable length array)
目前的C++還不支援它,因此不要亂用,會發生什麼事情沒人會知道
(在Visual Studio 2010會直接吐出編譯錯誤)
如果你希望你的陣列,是能夠隨著使用者的輸入而改變大小的
在C++請使用new來做動態配置,或者使用vector這樣的動態容器
譬如可變長度的一維陣列,你應該要這麼寫:
int count;
cin >> count;
int *array = new int[count]; // 當然使用後請記得用 delete 釋放空間
至於我所給的,就是可變長度二維版的寫法
相關資料可以爬文「動態二維」,有許多討論
而vector的用法,你可以上網搜尋,或者翻閱手上的書
我就偷懶不說明囉 XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.171.46
: ----------------------------------------
: #include<iostream>
: using namespace std;
: int main(){
: int count;
: while(cin>>count){
: int array[count][3];