Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > многомерный динамический массив


Автор: Helicopterr 31.8.2005, 21:23
как можно создать двумерный динамический массив после ввода пользователем его высота/ширина? А затем после инициализации передать его другой функции как параметр?


int determinant(int MASSIVE[][]) // ошибка в этой строке, просит указать размерность массива
{
}


void main()
{ unsigned short height;
unsigned short widht;
cin>>height; cin>>widht; // пользователь вводит размерность массива
int *MASSIVE = new int[height,widht]; // ???

//2 цикла инициализации массива MASSIVE:
for (int ii=0; ii<height; ii++)
{PR "input column ("<<ii+1<<") elemets of MASSIVE:\n";
for (int ij=0; ij<widht; ij++)
{
cin>>MASSIVE[ii][ij];
}}

determinant(MASSIVE); // вызов функции, нужно предать массив
}

Автор: Denn 31.8.2005, 21:45
Если размер массива не известен на этапе компиляции - надо использовать динамический массив. Юзай STL vector<> или что-то подобное.

Автор: Void 31.8.2005, 21:52
Стоило все-таки сперва воспользоваться поиском...

Цитата
Если размер массива не известен на этапе компиляции - надо использовать динамический массив.


Дык, человек и спрашивает, как их создавать, многомерные-то smile

Код

int determinant(int **m, int cols, int rows)
{
...
}

int **m = new int*[rows];
for (int i = 0; i < rows; ++i)
    m[i] = new int[cols];
...
determinant(m, cols, rows);
for (int i = 0; i < rows; ++i)
    delete[] m[i];
delete[] m;


Или использовать std::vector<std::vector<int> >. Или написать простенький класс-обертку (строк на 10).

Автор: karas 31.8.2005, 22:22
Пришлось за тебя написать весь код smile
А вообще почитай ,что такое многомерные массивы!Дерзай дружище smile

Код

#include<iostream.h>

int determinant(int **MASSIVE) // îøèáêà â ýòîé ñòðîêå, ïðîñèò óêàçàòü ðàçìåðíîñòü ìàññèâà
{
    return 0;
}


void main()
{ unsigned short height;
unsigned short widht;
cin>>height; cin>>widht; // ïîëüçîâàòåëü ââîäèò ðàçìåðíîñòü ìàññèâà
int **MASSIVE = new int*[height];
for(int i=0;i<height;i++)
MASSIVE[i]=new int[widht]; // ???

//2 öèêëà èíèöèàëèçàöèè ìàññèâà MASSIVE:
for (int ii=0; ii<height; ii++)
{cout<< "input column ("<<ii+1<<") elemets of MASSIVE:\n";
for (int ij=0; ij<widht; ij++)
{
cin>>MASSIVE[ii][ij];
}}

determinant(MASSIVE); // âûçîâ ôóíêöèè, íóæíî ïðåäàòü ìàññèâ
}

Автор: Helicopterr 31.8.2005, 23:54
Void
спасибо, что отредактировалsmile
а то я уж хотел чёркатьsmile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)