Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2009, 01:58   #1
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию Создание н-мерного динамического массива

В теме для студентов уже обсуждался подобный вопрос, только для одномерного случая. Вопрос в данный момент стоит шире. Пользователь с клавиатуры вводит размерность желаемого массива. Такой массив c нужной размерностью создается динамически.

Код:
int i;
int **matr;
matr = new int*[10];
for(i=0;i<10; i++)
 matr[i] = new int[10];
Подобное можно провести и для 3- 4 степени, с 3- 4 и более разыменованиями. Как же быть если степень неизвестна и желаемая размерность появляется динамически?
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 02.05.2009, 10:44   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Ну для каждой степени можно отедьльную функцию для создания и работы делать (С++ позволяет использовать максимум семимерные масивы)
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 02.05.2009, 15:28   #3
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Оо. Спасибо за информацию про семимерные массивы. А есть ли какой-нибудь искусственный способ обойти это ограничение?
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 02.05.2009, 15:53   #4
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Цитата:
Сообщение от Парсифаль Посмотреть сообщение
А есть ли какой-нибудь искусственный способ обойти это ограничение?
Зачем?.
Код:
int main ()
{
	int **********arr;  
	arr = new int*********[2];
	arr[0] = new int********[2];
	arr[0][0] = new int*******[2];
	arr[0][0][0] = new int******[2];
	arr[0][0][0][0] = new int*****[2];
	arr[0][0][0][0][0] = new int****[2];
	arr[0][0][0][0][0][0] = new int***[2];
	arr[0][0][0][0][0][0][0] = new int**[2];
	arr[0][0][0][0][0][0][0][0] = new int*[2];
	arr[0][0][0][0][0][0][0][0][0] = new int[2];

	arr[0][0][0][0][0][0][0][0][0][0] = 10;

	cout<<arr[0][0][0][0][0][0][0][0][0][0]<<endl;

	return 0;
}
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 02.05.2009, 15:53   #5
GrIfFiN
 
Регистрация: 29.04.2009
Сообщений: 8
По умолчанию

Вообще-то, насколько я помню, по стандарту максимальная размерность массива неограничена. А вот минимальная есть. Поправьте если ошибаюсь.
По поводу сабжа. Мне кажется для ваших целей можно использовать одномерный массив, работая с ним как с многомерным.
GrIfFiN вне форума Ответить с цитированием
Старый 02.05.2009, 16:05   #6
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Гриффин, просто обращаться к многомерному массиву по мне как удобнее, чем искать номер у одномерного.
Сергей, Вы указали 10-мерный массив (статический). Задача состояла в том, что пользователь сам вводит размерность массива.
Да, и кстати потом возникает проблема дальнейшего обращения к элементам этого массива.
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 02.05.2009, 16:10   #7
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Цитата:
Вы указали 10-мерный массив (статический)
Он динамический. если вы не заметили.
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 02.05.2009, 16:16   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Парсифаль
просто обращаться к многомерному массиву по мне как удобнее, чем искать номер у одномерного.
А вот реализовать как раз проще вариант с одномерным.

Если не секрет, зачем вам это?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.05.2009, 16:23   #9
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Сергей, он не динамический. Вы его объявили в динамически выделенной памяти. По мне как, динамический массив - это массив, в котором его параметры (размерность, количество строк), задаются не в коде, а пользователем, хотя, вероятно, я путаю терминологию.

Сазари, общая задача в том, чтобы иметь неопределенное заранее количество столбиков с информацией (это все в продолжении той задачи, о которой я спрашивал), и в зависимости от количества этих столбиков искусственный интеллект начинает свои расчеты по прогнозированию цены.
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 02.05.2009, 16:33   #10
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Ну допустим, такая ситуация. Сейчас 23 марта, четверг, в США не выходной, выходит статистика по рынку жилья и так далее. Спрогнозировать цену - задача.
Можно переформулировать. У нас есть н-мерный вектор
v[date, time, usaHolidays, usaStat, ....]. Надо сделать какой-то вывод по траектории движения цены на дальнейший период. При этом количество столбиков с исходной информацией может быть разным. ВОт откуда н-мерный массив
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление динамического массива Сергей089 Общие вопросы C/C++ 3 08.03.2009 13:13
Удаление элементов из динамического массива dashulka Общие вопросы Delphi 4 31.10.2008 14:03
Удаление элемента динамического массива Dogmat Помощь студентам 6 13.07.2008 14:33
Сортировка строк 2-мерного массива Mayday_007 Помощь студентам 1 04.04.2008 09:26