Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Duda sobre arrays bidimensionales

Estas en el tema de Duda sobre arrays bidimensionales en el foro de C/C++ en Foros del Web. hola a todos mi duda es la siguiente, necesito crear un array bidimensional y definir su tamaño despues :S, seria algo asi: class Prueba { ...
  #1 (permalink)  
Antiguo 27/01/2013, 12:09
 
Fecha de Ingreso: enero-2013
Mensajes: 1
Antigüedad: 11 años, 9 meses
Puntos: 0
Duda sobre arrays bidimensionales

hola a todos mi duda es la siguiente, necesito crear un array bidimensional y definir su tamaño despues :S, seria algo asi:


class Prueba {
private:
int Nb;
int Nk;
int Nr;
int key[];
int w[][4]; // AQUI EL PROBLEMA NECESITO UNA MATRIZ DE (Nb*(Nr+1)) x 4, //pero necesito saber primero el valor de estas variables que son ingresados por el //usuario

public:
void metodoX(){

//aqui cargaria los valores de w, el problema que me da es q si defino la matriz sin el primer indice, me da un error SIGSEV=Segmentation Fault, cuando sobrepaso el valor 34 para las filas,(algo q me falto decir es que la cantidad de filas varian de 44 en adelante



}


si pudiera definir el valor de la fila antes de aplicar el metodo se solucionaria, pero creo que no se puede hacer cuando no se pone un parámetro al array bidimensional. Alguna solucion sin usar STL????
  #2 (permalink)  
Antiguo 27/01/2013, 14:54
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 4 meses
Puntos: 28
Respuesta: Duda sobre arrays bidimensionales

Para eso amigo mío, están los punteros y la memoria dinámica. Puedes reservar tanta memoria como creas necesaria en ese momento.

Voy a suponer que estás usando C++, este sería el código:

Código:
class Prueba {
private:
int Nb; 
int Nk;
int Nr;
int key[]; 
int* w[4]; // Array de 4 punteros

public:
void metodoX(){

// Cuando ya tengas claro el tamanyo de la matriz

for (int i = 0; i < 4;i++)
   w[i] = new int[Tamanyo]; // Cada puntero crea una fila de la matriz

}
Y actuarias igual, eso si. La memoria dinámica no se borra sola y tendrás que limpiarla cuando termines:

Código:
for (int i = 0; i < 4;i++)
 delete[] w[i];
Para más información sobre la memoria dinámica y punteros:
http://c.conclase.net/curso/index.php?cap=017#inicio

Última edición por amchacon; 27/01/2013 a las 15:01

Etiquetas: arrays, bidimensionales, c++
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:24.