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í:
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:
(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:
(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:
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...