2009-10-07 4 views
3

과제가 있습니다. 나는 나를 위해 일하는 사람을 찾고있는 것이 아니다. 다른 작은 것들에 대해서도 조언을 받아 들일지라도, 나는 하나의 작은면에만 문제가있다.2 차원 동적 배열을 사용하여 클래스 작성

할당은 다음

2 차원 동적 배열을 사용하여 클래스를 작성한다.

생성자는 배열의 차원을 전달합니다. 생성자는 동적 배열의 모든 값을 행 인덱스에 열 인덱스를 곱한 값으로 초기화합니다.

  1. 열 인덱스가 매개 변수로 전달되는 2 차원 배열의 두 열을 바꿉니다. 열 elemnets의 값이 아니라 주소를 복사하면됩니다.
  2. 열 인덱스가 매개 변수로 전달되는 2 차원 배열의 열을 삭제합니다. 열 배열에서 delete 연산자를 사용하고 가로 배열 요소를 NULL로 설정하지 마십시오. 가로 배열의 크기를 1 줄입니다.
  3. 클래스의 인쇄 기능을 만들어 2 차원 배열의 값을 출력하고 함수가 올바르게 작동하는지 확인합니다. 제대로 작동하는지 확인한 후 인쇄 기능을 삭제하십시오.

개인 섹션에서 2D 배열을 선언하는 방법을 이해하는 데 도움이 필요합니다. 그리고 언급했듯이 누군가가 나에게 어떻게해야하는지에 대한 다른 힌트를 줄 수 있다면 그것은 인정 될 것입니다.

답변

7

그것은 잠시 내가 C++ 개발을 완료했지만, 내가 정확히 기억한다면, 당신은 efollowing 일처럼 뭔가를 할 것 때문에이었다 :

int rows = 5; 
int cols = 10; 

int** array = new int*[rows]; 
for (int i = 0; i < rows; i++) { 
    array[i] = new int[cols]; 
} 

내가 잘못 될 수도 있습니다; 나는 단일 차원 배열과 가짜 2D 배열에 당신이 가지고있는 반면 온라인에 게시물을 확인하고 첨자을 변경

http://en.allexperts.com/q/C-1040/creating-2D-array-dynamically.htm

+0

덕분에, 나는 이런 식으로 뭔가를해야 끝에 귀하의 대답은 구현 섹션의 일부를 정의하는 것 같아요 : 클래스 TwoDimensionalArray { \t 개인 : \t INT ** 배열; \t 공개 : \t TwoDimensionalArray (const int, const int); }; TwoDimensionalArray :: TwoDimensionalArray (정수 int 행, const int 열) { \t 배열 = 새 int * [행]; \t for (int i = 0; i KJP

1

이 당신에게 아이디어를 줄 것이다. 이 코드를 컴파일 시도하지 않은 :

class Array { 
    int **arr; 
}; 

Array::Array(int rows, int cols) { 
    arr = new int * [rows]; // this will allocate 'rows' many 'int *'s 
    if (arr) {    // to ensure memory was allocated 
     for (int i = 0; i < rows; i++) { 
      arr[i] = new int [cols]; // this will allocate 'cols' many 'int's 
      assert(arr[i]);   // to ensure memory was allocated 
     } 
    } 
} 

arr은 INT 포인터의 배열에 대한 포인터입니다. arr[i]은 int 배열에 대한 포인터입니다. 즉, 각 arr[i]은 2 차원 배열의 한 행을 나타냅니다. 이렇게하면 시작할 수 있습니다.

정말로 C++을 배우고 싶다면 직접 해보고 디버거 사용법을 배우십시오. 디버거가 아직 마음에 들지 않으면 printfs를 사용하여 잘못된 점을 찾으십시오.

0
class TwoDimensionalArray { 
    private: 
    int **array; 

    public: 
    TwoDimensionalArray(const int, const int); 
}; 

TwoDimensionalArray::TwoDimensionalArray(const int rows, const int columns) { 
    array = new int *[rows]; 
    for (int i = 0; i < rows; i++) 
     array[i] = new int[columns]; 
} 

int main() { 
    TwoDimensionalArray *arr1 = new TwoDimensionalArray(5, 10); 
    return 0; 
} 
관련 문제