Изменить размерность массивов во время работы программы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день. Суть проблемы такова: из txt файла считывается размер двумерного массива и создает его, но на это программа дает ошибку (указание размерности должно быть константой..) , по сути мне не нужно изменять размер в последующем, а только создать. Code::Blocks компилирует и ошибки не выдает(все ок) , данная ошибка вылезает при работе с Visual C++. Вот участок кода:
    int W,H,m[2];
    ifstream x("INPUT.txt");
    ofstream y("OUTPUT.txt");
    x>>W>>H;
    tElement2 *p,*temp;
    init_stack2(p);init_stack2(temp);
    Graf a[W+2][H+2];//тут вылезает ERROR
Кто может помочь? Я в теории могу переписать под списки, но суть вопроса не меняет.

Решение задачи: «Изменить размерность массивов во время работы программы»

textual
Листинг программы
Graf *a = new Graf[W+2][H+2]; 
delete[] a; //Высвобождение памяти

Объяснение кода листинга программы

  1. Создается указатель Graf на массив Graf[W+2][H+2] (где W и H - это константы, определяющие размерность массива)
  2. Выделяется память под массив Graf[W+2][H+2] с помощью оператора new
  3. В цикле заполняются значения массива a
  4. После окончания работы с массивом, память, выделенная под массив, освобождается с помощью оператора delete[]

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.333 из 5
Похожие ответы