Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/04/2008, 18:24
DarkCube
 
Fecha de Ingreso: marzo-2008
Mensajes: 1
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Declarar matriz sin tamaño

Buenas fran.

Para solucionar esto, podrías hacer uso de dos recursos:

· Dynamic Memory (memoria dinámica)
· El archivo de cabecera "vector"


Antes de nada, hay que dejar claro que no se puede especificar el tamaño de un array en tiempo de ejecución. Es decir, esto es ilegal:

Código:
int n = 0;
cout << "Introduzca el tamaño del array: ";
cin >> n;
float array[n];
No podemos dejar un array sin definir. Hay que especificar su tamaño en tiempo de compilacion (código).

Haciendo uso de la memoria dinámica nos quedaría así:

Código:
int n = 0;
cout << "Introduzca el tamaño del array: ";
cin >> n;
float* array = new float[n];
¡CUIDADO! Recuerda destruir la memoria utilizada con el simbolo "~" delante de la palabra "array". Es decir, así:

Código:
~array;
Bueno, pasamos al segundo recurso que sería el uso de "vector".
Para ello, debes incluir el archivo de cabecera "vector" de la siguiente forma:
Código:
#include <vector>
(no hace falta descargar este archivo de cabecera pues viene por defecto con tu compilador).

Ahora declaramos una variable de tipo "vector<tipo>" de la siguiente forma:
Código:
vector<float> miVector;
(nótese que entre los paréntesis angulares puede ir cualquier tipo: int, float, etc.)

Seguidamente establecemos el tamaño del vector "miVector" de la siguiente forma:

Código:
miVector.resize(12);
Finalmente, he de añadir que puedes obtener el tamaño del vector con la función(método) "size()":

Código:
cout << "Tamaño: " << miVector.size();
-------------------------------

Resumiendo, tu código quedaría así:

Código:
#include <iostream> //Para mostrar/coger datos
#include <vector>    //Para el vector =)
using namespace std;
int main()
{
     vector<int> intVector;
     int longitudVector=0;

     //Sustituye las 3 siguientes lineas para obtener el tamaño desde el fichero:
     cout << "Introduzca el tamano del array: "; 
     cin >> longitudVector;
     intVector.resize(longitudVector);

     for(int i=0; i<longitudVector; ++i)
     {
          intVector[i]=i;
     }
     for(i=0; i<longitudVector; ++i)
     {
          cout << "[" << i << "] = " << intVector[i] << endl;
     }
	 return 0;
}
Espero haberte ayudado.

Salu2...