Foros del Web » Programación para mayores de 30 ;) » Programación General »

Matrices De Tamaño Variable

Estas en el tema de Matrices De Tamaño Variable en el foro de Programación General en Foros del Web. ¿Alguien podría ayudarme con C++? Me encantaría poder hacer una matriz de tamaño variable, ya que no quiero asignar más espacio del que necesito, ni ...
  #1 (permalink)  
Antiguo 01/09/2003, 06:53
 
Fecha de Ingreso: agosto-2003
Ubicación: Madrid
Mensajes: 8
Antigüedad: 20 años, 8 meses
Puntos: 0
Matrices De Tamaño Variable

¿Alguien podría ayudarme con C++?

Me encantaría poder hacer una matriz de tamaño variable, ya que no quiero asignar más espacio del que necesito, ni menos, ya que me daría error.

Es decir, yo he intentado.

int nuevo = valor_devuelto;

CStringArray mi_array[nuevo];

No puedo hacerlo ya que no acepta tamaños variables, tienen que ser constantes.

¿No es posible pasar una variable a una constante?
¿Cómo podría arreglar este problema?

Me interesa seguir la línea del código expuesto, ya que necesito que un dato, tenga otros muchos itinerados.

Gracias a todo el que me ayude, de verdad.
  #2 (permalink)  
Antiguo 01/09/2003, 09:51
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
En C no puedes declarar un array de tamaño variable, el tamaño se define en tiempo de compilacion, no de ejecucion. Por eso no te lo acepta.

Lo que se hace en esos casos es hacer uso de Listas Enlazadas, de manera que se agregua un nodo por cada elementro junsto hasta el momento en que desees añadirlo y al eleiminarlo liberas la memoria asignada.

De esta manera no tienes desperdicio de memoria.

Si no lo has hecho te recomiendo que cheques turoriales, requieres hacer uso de apuntadores y te puede costar un poco adaptarte a la idea.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 01/09/2003, 14:22
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Dices que trabajas en C++, no se si con el operador new te permite usar variables como tamaño del array. Con esto tendras que usar un puntero, y creo que tendras tambien que acordarte de hacer un delete cuando acabes de trabajar con el array:
Código:
int tamano=23;
CStringArray * mi_array=new CStringArray[tamano];
// tu codigo
delete[] mi_array; // para liberar la memoria
Te advierto que no se si funcionara, ni siquiera estoy seguro de la sintaxis.

Si usas C, podrias usar un puntero y la funcion malloc().

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 01/09/2003, 17:30
 
Fecha de Ingreso: agosto-2003
Ubicación: Madrid
Mensajes: 8
Antigüedad: 20 años, 8 meses
Puntos: 0
Muchísimas gracias a los dos, el código funcionó.
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 07:00.