es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Inicialize una matriz 2D en tiempo de compilación y permita la entrada del usuario.

Estoy intentando declarar un arreglo que tenga un tamaño en tiempo de ejecución/compilación a través de un constructor sobrecargado.

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

overloadConstruct(int n){
    arr[n][n] = {0,0};
}

Esto no funciona porque dice que el segundo ‘n’ debe ser constante y no se permite el uso de ‘auto’. Cualquier ayuda sería apreciada. No estoy seguro de todas las reglas con los arreglos, especialmente los arreglos bidimensionales al hacer esto. Solo necesito ser capaz de determinar el tamaño de un arreglo bidimensional en tiempo de ejecución/compilación a través de una entrada.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Hay un par de problemas con el código proporcionado. En primer lugar, al declarar una matriz 2D, se debe especificar el tamaño de ambas dimensiones. En segundo lugar, el uso de new para asignar dinámicamente una matriz 2D requiere una sintaxis ligeramente diferente. Aquí hay un ejemplo de cómo se puede declarar una matriz 2D con un tamaño de tiempo de ejecución utilizando constructores sobrecargados:

    “`c ++
    class MyClass {
    privado:
    int ** arr; // declarar una matriz 2D dinámica

    público:
    // constructor de sobrecarga para tamaño de tiempo de ejecución
    MyClass (int n) {
    arr = new int * [n]; // asignar memoria para las filas
    for (int i = 0; i <n; i=”” ++)=”” {=”” arr=”” [i]=”new” int=”” [n];=”” asignar=”” memoria=”” para=”” las=”” columnas=”” }=”” }=”” destructor=”” para=”” liberar=”” memoria=”” cuando=”” se=”” elimina=”” el=”” objeto=”” ~=”” myclass=”” ()=”” {=”” for=”” (int=”” i=”0;” i=””></n;><n; i ++) {
    delete [] arr [i]; // eliminar cada columna
    }
    delete [] arr; // eliminar las filas
    }
    };


    en este ejemplo, el constructor toma un entero `n` que especifica el tamaño de ambas dimensiones de la matriz 2d. luego utiliza bucles anidados para asignar dinámicamente memoria para las filas y columnas de la matriz. finalmente, se proporciona un destructor para liberar la memoria cuando se elimina el objeto. tenga en cuenta que este ejemplo utiliza `int **` para declarar la matriz 2d, que es un puntero a un puntero. esto permite la asignación dinámica de memoria para cada fila y columna. i="" ++)="" {="" delete="" []="" arr="" [i];="" eliminar="" cada="" columna="" }="" delete="" []="" arr;="" eliminar="" las="" filas="" }="" };="" ```="" en="" este="" ejemplo,="" el="" constructor="" toma="" un="" entero="" `n`="" que="" especifica="" el="" tamaño="" de="" ambas="" dimensiones="" de="" la="" matriz="" 2d.="" luego="" utiliza="" bucles="" anidados="" para="" asignar="" dinámicamente="" memoria="" para="" las="" filas="" y="" columnas="" de="" la="" matriz.="" finalmente,="" se="" proporciona="" un="" destructor="" para="" liberar="" la="" memoria="" cuando="" se="" elimina="" el="" objeto.="" tenga="" en="" cuenta="" que="" este="" ejemplo="" utiliza="" `int="" **`="" para="" declarar="" la="" matriz="" 2d,="" que="" es="" un="" puntero="" a="" un="" puntero.="" esto="" permite="" la="" asignación="" dinámica="" de="" memoria="" para="" cada="" fila="" y=""></n; i ++) { delete [] arr [i]; // eliminar cada columna } delete [] arr; // eliminar las filas } };

    en este ejemplo, el constructor toma un entero n que especifica el tamaño de ambas dimensiones de la matriz 2d. luego utiliza bucles anidados para asignar dinámicamente memoria para las filas y columnas de la matriz. finalmente, se proporciona un destructor para liberar la memoria cuando se elimina el objeto.

    tenga en cuenta que este ejemplo utiliza int ** para declarar la matriz 2d, que es un puntero a un puntero. esto permite la asignación dinámica de memoria para cada fila y columna.>

Comments are closed.