|
2 / 2 / 1
Регистрация: 31.12.2012
Сообщений: 31
|
|
Массив произвольной размерности и работа с ним20.03.2013, 11:05. Показов 5331. Ответов 35
Метки нет (Все метки)
Доброго времени суток. Появилась интересная задача: создать функцию для создания массива, размерность которого укажут в ходе программы(то есть не a[n] и n укажут-а а[q1][q2][q3][q4]..., и q1,q2... укажут, как и количество этих q, уже в процессе выполнения программы) и поменять местами первый с последним, второй с предпоследним и так далее элементы. Вопрос в следующем: как, собственно, создать такой массив, как сделать необходимое (изначально неизвестное) количество вложенных циклов для затрагивания всех элементов массива? Если вариантов несколько-то лучше самый простой и быстродейственный
![]() З.Ы. Для количества вложенных циков-на ум приходит эллипсис, хотя с ним и гемор. А вот идей по созданию массива полный 0. З.З.Ы. Создать строку вместо массива не предлагать-индусский код не для меня.
0
|
|
| 20.03.2013, 11:05 | |
|
Ответы с готовыми решениями:
35
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 20.03.2013, 11:09 | |
|
Задача не интересная. Это даже не задача. Самое обычное выделение динамической памяти. new. Кол-во циклов у тебя уже известно, когда пользователь задаст размер массива.
0
|
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 20.03.2013, 11:12 | |
|
Создать одномерный массив, размерности N = q1*q2*...*qn. А для доступа по n-мерным координатам сделать обертку, принимающую Point<N>.
0
|
|
|
2 / 2 / 1
Регистрация: 31.12.2012
Сообщений: 31
|
|
| 20.03.2013, 11:29 [ТС] | |
|
Vourhey, не смешно. Как выделять память через new я знаю, вопрос в том как создать массив произвольной РАЗМЕРНОСТИ а не РАЗМЕРА. То есть могут задать a[q1] а могут a[q1][q2][q3][q4][q5]...[q100500].
Tulosba, просил же не предлагать строку. Это не вариант.
0
|
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 20.03.2013, 11:41 | |
|
0
|
|
|
2 / 2 / 1
Регистрация: 31.12.2012
Сообщений: 31
|
|
| 20.03.2013, 11:46 [ТС] | |
|
Под строкой я имел в виду одномерный массив.
0
|
|
|
250 / 232 / 46
Регистрация: 05.02.2010
Сообщений: 3,288
|
|
| 20.03.2013, 12:40 | |
|
насколько я понимаю, произвольной размерности, нельзя создать
0
|
|
|
7 / 7 / 1
Регистрация: 21.01.2013
Сообщений: 55
|
|
| 20.03.2013, 12:50 | |
|
Вам лучше ознакомиться с STL - Vector.
И не придется создавать велосипед.
0
|
|
|
2 / 2 / 1
Регистрация: 31.12.2012
Сообщений: 31
|
|
| 20.03.2013, 12:54 [ТС] | |
|
Да я знаком. Вектор отличается от динамического массива тем, что можно количество элементов менять после того, как он создан, и тем, что для обмена элементов можно менять ссылки на них. Это не устраняет ни одной из 2х моих задач(создание многомерного массива и операции над ним).
0
|
|
|
2 / 2 / 1
Регистрация: 31.12.2012
Сообщений: 31
|
|
| 20.03.2013, 13:23 [ТС] | |
|
Функция-рекурсия и для создания массива(используя то что ссылка на w[0]=*w) и для операций с ним, которая вызывает себя в цикле, но каждый раз уменьшая размерность на 1, и начинающая реальные операции только когда доходит до размерности в 1, то есть до строки...
Непросто, но да ладно. Есть только одна загвоздка в таком случае: w[0][0][0]=***w. И сколько этих звёздочек будет в массиве, знать заранее нельзя(размерность же). Как в таком случае передать ссылку на массив какой-то функции(в моём случае, функции перестановки)? CollSpack, я и не хочу создавать велосипед, поэтому и написал сюда
0
|
|
|
|
||
| 20.03.2013, 13:27 | ||
|
P.S. ты путаешь указатели и ссылки.
0
|
||
|
2 / 2 / 1
Регистрация: 31.12.2012
Сообщений: 31
|
|
| 20.03.2013, 13:39 [ТС] | |
|
Да я их вообще не различаю(указатели и ссылки) :о Разве это не одно и то же?
всмысле *ptr? Я знаю только один метод правильно послать массив n-той размерности в функцию: послать указатель n-той степени(то есть (n)w, вместо (n)-нужное количество звёздочек)+размерность отдельно посылать. Есть альтернатива части с n-тым количеством звёздочек?
0
|
|
|
328 / 327 / 92
Регистрация: 16.12.2012
Сообщений: 544
|
|
| 20.03.2013, 13:51 | |
|
Ссылка должна быть прикреплена к конкретному объекту, а указатель может быть сам по себе.
0
|
|
|
|
|||
| 20.03.2013, 13:52 | |||
|
Другое дело что потом работать с этим N-мерным массивом хз как, если только опять через рекурсию, и то там костыли городить придеться.
0
|
|||
|
2 / 2 / 1
Регистрация: 31.12.2012
Сообщений: 31
|
||||||
| 20.03.2013, 14:26 [ТС] | ||||||
|
Окей-с, попробуем...
0
|
||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 20.03.2013, 14:30 | |
|
**char
что это?
0
|
|
| 20.03.2013, 14:40 | |
|
0
|
|
|
2 / 2 / 1
Регистрация: 31.12.2012
Сообщений: 31
|
|
| 20.03.2013, 14:48 [ТС] | |
|
Это указатель на указатель на чар. Как я понял, Kastaneda имел в виду что у нас есть (n)w, где (n)-нужное количество звёздочек, и это указатель. Как *w его передать нельзя, но если сделать указатель на него-выйдет **r, и его уже можно передавать. Хотя я считаю, что если r-указатель на (n)w, то это будет (n+1)r, а не (2)r.
хз вообще
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 20.03.2013, 14:50 | |
|
0
|
|
| 20.03.2013, 14:50 | |
|
Помогаю со студенческими работами здесь
20
работа с матрицами произвольной размерности Работа с матрицами произвольной размерности
Дан двумерный массив произвольной размерности Как в классе реализовать массив произвольной размерности? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|