처음에 짰던 코드: error

2차원 배열은 아래와 같이 동적할당을 할 수 없다.

 

#include <iostream>
using namespace std;
int main() {
    
    int n;
    cin >> n;

   int* arr = new int[n][n];

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> arr[i][j];
        }
    }

    int r, c;
    cin >> r >> c;
    r--;
    c--;

    int s = arr[r][c];

    for (int i = r; i < n; i++) {
        for (int j = c; j < n; j++) {
            if (arr[r][c] < s) {
                arr[r][c] = 0;
            }
        }
    }

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

 

chatGPT를 통해 고친 코드:

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    // Allocate memory for an array of int pointers (rows)
    int** arr = new int*[n];

    // Allocate memory for each row
    for (int i = 0; i < n; i++) {
        arr[i] = new int[n];
    }

    // Input values into the 2D array
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> arr[i][j];
        }
    }

    // Deallocate memory for each row
    for (int i = 0; i < n; i++) {
        delete[] arr[i];
    }

    // Deallocate memory for the array of int pointers
    delete[] arr;

    return 0;
}

 

+ Recent posts