Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 19.11.2015
Сообщений: 35

Массив: Возможно ли динамическое изменение размерности массива?

07.07.2017, 20:27. Показов 2174. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возможно ли динамическое изменение размерности массива?

Или, по крайней мере, создание N-мерного массива, то есть массива любой размерности, неизвестной заранее?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.07.2017, 20:27
Ответы с готовыми решениями:

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

Возможно ли создать массив неизвестной заранее размерности?
Собственно, сабж в названии. Можно ли получить от пользователя N, где N - размерность массива, создать его и заполнить рандомными числами?...

Изменение размерности массива
Здравствуйте! Возникла проблема. Такое задание, на UserForm, когда нажимаешь на кнопку, создается массив, с той размерностью какая...

11
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
07.07.2017, 21:04
Шон Безкуров, да, пример:
Delphi
1
2
3
4
5
6
7
8
var a: array of integer;
    b: array of array of integer;
    n, m: integer;
begin
  n:=2;
  m:=4;
  SetLength(a, n);
  SetLength(b, n, m);
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,675
Записей в блоге: 5
07.07.2017, 21:08
Нестандартными способами - вполне. Стандартными - не очень представляю, как.

Добавлено через 2 минуты
Цитата Сообщение от TFullControl Посмотреть сообщение
Шон Безкуров, да, пример:
Я так понимаю, это не совсем то, что ему нужно.
А так - была размерность массива N, сделать её K.
0
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
07.07.2017, 21:11
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
Я так понимаю, это не совсем то, что ему нужно.
А так - была размерность массива N, сделать её K.
А что мешает сделать так?
Delphi
1
2
3
4
5
6
7
8
var a: array of integer;
    n: integer;
begin
  n:=2;
  SetLength(a, n);
  //что-то делаем
  n:=78;
  SetLength(a, n);
Менять размерность можно сколько угодно раз, если массив стал меньше лишние элементы просто отсекаются.
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,675
Записей в блоге: 5
07.07.2017, 21:18
Это не размерность, это число элементов.
Размерность это так: был массив A[i1,i2,...,iN], стал A[i1,i2,...,iK], где K<>N
0
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
07.07.2017, 21:21
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
Это не размерность, это число элементов.
Готов поспорить, что автору как раз и надо изменять "число элементов".
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,675
Записей в блоге: 5
07.07.2017, 21:24
Ну, не знаю, он написал: создание N-мерного массива.
Пусть разъяснит, подождём.
0
1 / 1 / 0
Регистрация: 19.11.2015
Сообщений: 35
07.07.2017, 23:31  [ТС]
Я, конечно, имел ввиду размерность, а не размер, то есть количество измерений, а не элементов)
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,675
Записей в блоге: 5
07.07.2017, 23:49
Тогда только нестандартными средствами. Пример:

Добавлено через 6 минут
Delphi
1
2
3
4
5
6
7
8
var A:array of byte;
...
Dim:=5;  // Число измерений
N:=10;   // Длина одного измерения
Els:=1;for i:=0 to Dim-1 do Els:=Els*N; // Общее число элементов
SetLength(A,Els); // Выделение памяти
...
A[i1+N*i2+N*N*i3+N*N*N*i4+N*N*N*N*i5] // Обращение в массиву с индексом i1,i2,i3,i4,i5
1
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
08.07.2017, 01:44
Цитата Сообщение от Шон Безкуров Посмотреть сообщение
Я, конечно, имел ввиду размерность, а не размер, то есть количество измерений, а не элементов)
А зачем? Задачу объясни.
Если массив статический, то область памяти, которую он занимает можно без всяких изменений трактовать как массив любой размерности, лишь бы его размер не превышал размер этой области.
Если массив динамический, то сложнее будет.
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,661
Записей в блоге: 21
08.07.2017, 09:10
в массиве любой размерности "под капотом" обращение к элементу вычисляется как в одномерном массиве
примерно как показалMassaraksh7, только вместо единого N берем N[i] - размер размерности))

Добавлено через 2 минуты
но в реальной жизни вряд ли вам удастся использовать это
четырехмерный массив сложно представить, сложно забить в него данные полностью, слишком много памяти будет есть
и данные обычно представляются списком векторов любой размерности.
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,675
Записей в блоге: 5
08.07.2017, 15:47
Четырехмерный массив я использовал в метеорологии, но это наивысшая размерность, с которой я работал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.07.2017, 15:47
Помогаю со студенческими работами здесь

Изменение размерности массива
Добрый день, есть задача: нужно считать строку (элементарное математическое выражение вида a+b, a-b, a*b, a/b), вычислить значение...

Изменение размерности массива ArrayList
Здравствуйте. У меня задание переопределить методы списка с помощью массива. class MyList &lt;E&gt; implements List &lt;E&gt; { int...

Изменение размерности динамического массива
Уважаемые господам программисты! Столкнулся с очень неприятной штукой, не могу изменить размерность динамического массива, одного и того...

Изменение размерности динамического массива
Доброго времени суток, форумчане, как в VBA изменять (увеличивать) обе размерности двумерного динамического массива? Знаю что в двумерном...

Изменение определенных значений массива в текущей размерности в цикле
Здравствуйте Имеется трехмерный массив, третья размерность которого изменяется в цикле. Необходимо в текущей размерности массива...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
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
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru