Cómo solucionar el error “El valor del tipo no se puede asignar a una entidad del tipo “?
Estoy desarrollando una matriz bidimensional en c++ utilizando la entrada del usuario de filas y columnas, y quiero asignar memoria para las columnas, pero sigo recibiendo un error que dice:
Un valor de tipo “int” no puede asignarse a una entidad de tipo “int”
Sé lo que significa el error, pero ¿cómo lo soluciono? Es molesto. A continuación se muestra una parte de mi código. También no incluí la sección de impresión, ya que quiero poder transponer la matriz más tarde.
// Variables locales
int filas, columnas;
// Solicitar al usuario que ingrese el número de filas y columnas
std::cout << "Por favor ingrese la cantidad de filas y columnas, respectivamente: " << std::endl;
std::cin >> filas >> columnas;
// Creando una matriz en la memoria heap y dimensionándola según el número de filas
int* arr = new int[filas];
// Asignar los valores de las filas
for (int i = 0; i < filas; i++) {
// Creando un nuevo heap para las columnas en arr[i]
arr[i] = new int[columnas];
}
// Obteniendo los valores de las filas
for (int i = 0; i < filas; i++) {
// Asignar y obtener los valores de las columnas
for (int j = 0; j < columnas; j++) {
// Ingresar los elementos de la matriz
std::cout << "Por favor ingrese un número: " << std::endl;
std::cin >> arr[i][j];
}
}
davy.ai
El error ocurre porque estás asignando un valor entero a un puntero. El puntero debe contener una dirección de memoria, no un valor entero. Para solucionar esto, debes cambiar la declaración de tu array a un puntero a un puntero, como se muestra a continuación:
Aquí, declaramos
arr
como un puntero a un puntero de enteros. Asignamos un array de punteros en la primera línea y luego asignamos a cada puntero un array de enteros de asignación dinámica en el bucle.Al hacer esto, puedes referenciar cada elemento de tu array bidimensional a través de un puntero a un puntero, usando
arr[i][j]
. Esto permite la asignación y referencia adecuada de la memoria para tu array.