2017-05-03 2 views
-7

Array 요소를 사용자로부터 가져와 2 차원 배열을 초기화하는 방법은 무엇입니까?2D 배열 초기화?

+0

무엇을 시도했는데 실패 했나요? – Rakete1111

+2

수백 가지 이전 답변 중에서 검색을 고려해 보셨습니까? – stark

+0

무엇을하고 있는지 자세히 알아보기 –

답변

0

이러한 방식으로 초기화 할 때 2D 배열의 경계를 지정해야합니다.

int arr[][]int arr[row][col]으로 바꾸면 행과 열의 개수를 사용할 수 있다고 가정하고 문제를 해결할 수 있습니다.

다음 코드는 도움이 될 수 있습니다 : C#을 달리

#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를; 값을 수정해야합니다. 언어 관련 문제와 마찬가지로 항상 문제를 우회 할 수있는 방법이 있습니다. 이 경우 가장 좋은 방법은 포인터를 사용하여 동적 배열을 만드는 것입니다.

#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; 
}