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

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

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

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

06.12.2012, 14:55. Просмотров 2640. Ответов 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++
Пытаюсь создать трёхмерный динамический массив. Но создаётся не любого типа. Вроде 0 5 1. или 2 2 2 Не создаются. Выдаёт ошибку Access...

Трёхмерный динамический массив - C++
Учусь делать многомерные динамические массивы. Написал прогу int _tmain(int argc, _TCHAR* argv) { int M, N, L, i, j, k, b = 9, a...

Динамический трёхмерный массив - C++
Товарищи, помогите найти ошибку. Создаю 3х мерный динамический массив: int z; cout&lt;&lt;&quot;Input y\n&quot;; cin&gt;&gt;y; cout&lt;&lt;&quot;\nInput...

Трёхмерный динамический массив - C++
Доброго времени суток! Не могу создать трёхмерный динамический массив! Точнее создаю один раз заполняю. Но когда пытаюсь заполнить второй...

Создать динамический массив (Если чётных чисел больше, то массив должен быть укорочен на 2 элемента) - C++
Создать динамический массив из 8 случайных целых чисел из отрезка и вывести его на экран . Если в массиве чётных чисел оказалось...

Массив и память. Как создать динамический массив? - C++
не могу исправить ошибки. И нужен динамический массив я что-то попробовала для его создания но ничего не вышло #include &quot;stdafx.h&quot; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Модератор
Эксперт CЭксперт С++
13147 / 7410 / 830
Регистрация: 27.09.2012
Сообщений: 18,244
Записей в блоге: 3
Завершенные тесты: 1
06.12.2012, 14:58 #2
C++
1
Field[i]
это двойной указатель.
Вам нужно что-то вроде
C++
1
Field[i][j]
prazuber
109 / 109 / 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
Сообщений: 193
06.12.2012, 15:03  [ТС] #4
Благодарю за помощь!
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 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
109 / 109 / 3
Регистрация: 29.04.2010
Сообщений: 240
06.12.2012, 15:06 #6
gray_fox, спасибо, неуглядел.
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
Сообщений: 193
06.12.2012, 18:33  [ТС] #8
А возможно ли присвоить значение таким образом:

C++
1
2
//до этого я объявил 3д массив
Field[1][1]=10;
Чёт не получается так.
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
06.12.2012, 18:36 #9
FireProoF, нет. Какого результата ожидаешь?
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 193
06.12.2012, 18:37  [ТС] #10
C++
1
2
Field[1][1]=10;
cout<<Field[1][1];
10
Если нельзя так, то зачем нужны 3D массивы? Или это только с динамическими?
Croessmah
Модератор
Эксперт CЭксперт С++
13147 / 7410 / 830
Регистрация: 27.09.2012
Сообщений: 18,244
Записей в блоге: 3
Завершенные тесты: 1
06.12.2012, 18:39 #11
то есть создали "трехмерный" массив, а обращаемся как к двухмерному?
C++
1
Field[1][1]
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
06.12.2012, 18:40 #12
FireProoF, так ведь Field[1][1] - это указатель.
Croessmah
Модератор
Эксперт CЭксперт С++
13147 / 7410 / 830
Регистрация: 27.09.2012
Сообщений: 18,244
Записей в блоге: 3
Завершенные тесты: 1
06.12.2012, 18:41 #13
у трехмерного массива три измерения, а значит и индекса тоже три
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2012, 18:41
Привет! Вот еще темы с ответами:

Создать динамический массив - C++
Создать динамический массив указателей для сохранения двухмерного массива А в динамической памяте. Составить программу для подсчета суммы...

Трёхмерный массив в Функцию - C++
Трёхмерный массив в Функцию нужно засунуть и изменять значение переменой которую передали в неё как реализовать ?! #include &lt;iostream&gt;...

Создать класс-динамический массив - C++
Помогите, пожалуйста!! не могу решить задачу, очень важно! Условие:создайте класс – динамический массив. В качестве элементов массива...

Создать динамический массив указателей - C++
Создать динамический массив указателей для сохранения двумерного массива А в динамической памяти. Составить программу для подсчета...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.12.2012, 18:41
Ответ Создать тему
Опции темы

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