2017-05-03 214 views
-7

如何通過從用戶數組中獲取元素來初始化2d數組?2D陣列初始化?

#include <iostream> 
using namepace std; 
int main() 
{ 
    int row, col; 
    int arr[][]; 
    for (int i = 0; i < row; i++) { 
     for (int j = 0; j < col; j++) { 
      cout << "Elements of Array :" << ' '; 
      cin >> arr[i][j]; 
     } 
    } 
    return 0; 
} 
+0

你有什麼試過,爲什麼你失敗了? – Rakete1111

+2

您是否考慮過在數百個之前的答案中搜索? – stark

+0

需要你在做什麼的更多細節 –

回答

0

以這種方式進行初始化時,必須指定2D數組的邊界。

更換int arr[][]int arr[row][col]可以解決您的問題,假設行數和列數都可用。

以下代碼可能是有幫助的:

#include <iostream> 
    using namespace std; 
    int main() 
    { 
     int row, col; 
     cout << "Number of rows : "; 
     cin >> row; 
     cout << "Number of columns : "; 
     cin >> col; 
     int arr[row][col]; 
     for (int i = 0; i < row; i++) { 
      for (int j = 0; j < col; j++) { 
       cout << "Enter value for row " << i << " column " << j << " : "; 
       cin >> arr[i][j]; 
      } 
     } 
     cout << "Elements of Array :" << endl; 
     for (int i = 0; i < row; i++) { 
      for (int j = 0; j < col; j++) { 
       cout << arr[i][j] << " "; 
      } 
      cout << endl; 
     } 
     return 0; 
    } 
+0

*** int arr [row] [col]; ***是無效的C++。 C++不允許使用VLA。雖然有些編譯器支持這個擴展。 – drescherjm

1

不同於C#,C++不能初始化變量陣列;值必須修復。 與任何語言相關的問題一樣,總有辦法繞過這個問題。 在這種情況下,最好的方法是使用指針並創建自己的動態數組。

#include <iostream> 
using namespace std; 
int main() 
{ 
    int row, col; 
    cout << "Number of rows : "; 
    cin >> row; 
    cout << "Number of columns : "; 
    cin >> col; 
    //init the pointer array 
    int **arr =new int*[row] ; 
    for (int i = 0; i < row; i++) 
    { 
     arr[i] = new int[col];// init the columns for each row 
     for (int j = 0; j < col; j++) 
     { 
      cout << "Enter value for row " << i << " column " << j << " : "; 
      cin >> arr[i][j]; 
     } 
    } 
    cout << "Elements of Array :" << endl; 
    for (int i = 0; i < row; i++) 
    { 
     for (int j = 0; j < col; j++) 
     { 
      cout << arr[i][j] << " "; 
     } 
    } 
    cout << endl; 
    return 0; 
}