Массивы C++

Массивы C++.
Пишет, что numbers должна быть константного типа как решить эту проблему? (P.S. количество индексов нужно вводить с клавиатуры) .

#include
#include
#include
#include
int main()
{
int numbers;
cin>>numbers;
float meanings[numbers];
for(int i=0;i>meanings[numbers];
}
getch();
return 0;
}

  • а почему не float* meanings = new float[numbers] ? разве так не идёт?
  • float meanings[numbers]; - так можно объявить массивы только с заранее известным количеством элементов. Если количество элементов заранее не известно и должно подставляться в процессе работы программы, то нужны выделять память для массива с помощью операторов new/delete. Советую об этом почитать.
  • Похоже, не количество индексов, а размер массива? Есть три варианта:
    а) пиши на С. В современном С это можно (массивы VLA). Впрочем, некоторые современные компиляторы C++ из соображений совместимости с С тоже это поддерживают. Зато устаревший iostream.h давно не поддерживается ;)
    б) используй динамически создаваемые с помощью new массивы
    в) используй встроенные в C++ динамические массивы типа vector, для их использования подключается заголовочный файл vector. Там можно вообще не объявлять количество элементов массива, он самостоятельно будет расширяться при увеличении количества его элементов. Это наиболее правильный путь.