Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.65
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 191
#1

Динамический трёхмерный массив (создать) - C++

06.12.2012, 14:55. Просмотров 2289. Ответов 12

Помогите создать трёхмерный динамический массив.
C++
1
2
3
4
5
int size=10;
    int ***Field;
    Field=new int**[size];
    for(int i=0;i<size;i++)     Field[i]=new int*[size];
    for(int i=0;i<3;i++)        Field[i]=new int[3];
Ошибка:
error C2440: =: невозможно преобразовать "int *" в "int **"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2012, 14:55     Динамический трёхмерный массив (создать)
Посмотрите здесь:

Динамический трёхмерный массив C++
Создать динамический массив указателей C++
Возможно ли создать двумерный динамический массив? C++
C++ Как создать динамический двумерный массив
C++ Создать класс-динамический массив
C++ Создать динамический массив
Создать динамический массив (Если чётных чисел больше, то массив должен быть укорочен на 2 элемента) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12498 / 7060 / 792
Регистрация: 27.09.2012
Сообщений: 17,441
Записей в блоге: 2
Завершенные тесты: 1
06.12.2012, 14:58     Динамический трёхмерный массив (создать) #2
C++
1
Field[i]
это двойной указатель.
Вам нужно что-то вроде
C++
1
Field[i][j]
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
06.12.2012, 15:01     Динамический трёхмерный массив (создать) #3
Если я правильно понял, вам нужно что-то вроде такого:
C++
1
2
3
4
5
6
7
8
9
10
int size=10;
int ***Field = new int** [size];
for (int i = 0; i < size; i++)   
{
    Field[i] = new int* [size];
    for(int j = 0; j < 3; j++) 
    {
        Field[i][j] = new int [3];
    }
}
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 191
06.12.2012, 15:03  [ТС]     Динамический трёхмерный массив (создать) #4
Благодарю за помощь!
gray_fox
What a waste!
 Аватар для gray_fox
1249 / 1132 / 54
Регистрация: 21.04.2012
Сообщений: 2,357
Завершенные тесты: 3
06.12.2012, 15:05     Динамический трёхмерный массив (создать) #5
Цитата Сообщение от PraZuBeR Посмотреть сообщение
C++
1
2
3
4
Field[i] = new int* [size];
for(int j = 0; j < 3; j++) {
   Field[i][j] = new int [3];
}
Думаю скорее j < size в условии.
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
06.12.2012, 15:06     Динамический трёхмерный массив (создать) #6
gray_fox, спасибо, неуглядел.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
06.12.2012, 15:17     Динамический трёхмерный массив (создать) #7
Цитата Сообщение от FireProoF Посмотреть сообщение
Field[i]=new int[3];
Ну правильно. new int[3] возвращает простой указатель на int, а Field - тройной указатель на int. Ты используешь индекс, а указатель эквивалентен массиву? Эйис. 1 индекс, значит размерность элемента меньше, чем размерность массива на 1, то есть этот элемент - двойной указатель. Здесь нужны 2 индекса, а не 1. Кроме того, с учётом
Цитата Сообщение от FireProoF Посмотреть сообщение
int ***Field;
дай ка декларацию оператора [].
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 191
06.12.2012, 18:33  [ТС]     Динамический трёхмерный массив (создать) #8
А возможно ли присвоить значение таким образом:

C++
1
2
//до этого я объявил 3д массив
Field[1][1]=10;
Чёт не получается так.
gray_fox
What a waste!
 Аватар для gray_fox
1249 / 1132 / 54
Регистрация: 21.04.2012
Сообщений: 2,357
Завершенные тесты: 3
06.12.2012, 18:36     Динамический трёхмерный массив (создать) #9
FireProoF, нет. Какого результата ожидаешь?
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 191
06.12.2012, 18:37  [ТС]     Динамический трёхмерный массив (создать) #10
C++
1
2
Field[1][1]=10;
cout<<Field[1][1];
10
Если нельзя так, то зачем нужны 3D массивы? Или это только с динамическими?
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12498 / 7060 / 792
Регистрация: 27.09.2012
Сообщений: 17,441
Записей в блоге: 2
Завершенные тесты: 1
06.12.2012, 18:39     Динамический трёхмерный массив (создать) #11
то есть создали "трехмерный" массив, а обращаемся как к двухмерному?
C++
1
Field[1][1]
gray_fox
What a waste!
 Аватар для gray_fox
1249 / 1132 / 54
Регистрация: 21.04.2012
Сообщений: 2,357
Завершенные тесты: 3
06.12.2012, 18:40     Динамический трёхмерный массив (создать) #12
FireProoF, так ведь Field[1][1] - это указатель.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2012, 18:41     Динамический трёхмерный массив (создать)
Еще ссылки по теме:

Создать динамический массив целого типа C++
C++ Массив и память. Как создать динамический массив?
C++ Трёхмерный динамический массив
C++ Трёхмерный массив в Функцию
Создать динамический массив вне функций C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12498 / 7060 / 792
Регистрация: 27.09.2012
Сообщений: 17,441
Записей в блоге: 2
Завершенные тесты: 1
06.12.2012, 18:41     Динамический трёхмерный массив (создать) #13
у трехмерного массива три измерения, а значит и индекса тоже три
Yandex
Объявления
06.12.2012, 18:41     Динамический трёхмерный массив (создать)
Ответ Создать тему
Опции темы

Текущее время: 05:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru