0 / 0 / 0
Регистрация: 12.12.2009
Сообщений: 37
|
|
1 | |
Отрицательная часть динамического массива22.03.2010, 14:58. Показов 935. Ответов 10
Метки нет Все метки)
(
Подскажите пожалуйста решение следующей проблемы:
//задаю массив f : array of Float; ... //задаю его размер setlength(f , N); После этого у нас массив размерности N, а вот элементы массива начинаются с 0, то есть: f[0] , f[1] и т.д. А как сделать чтобы его номера были и в отрицательной области: от f[-(n div 2)] до f[n div 2] Спасибо большое тем кто откликнется!
0
|
|
22.03.2010, 14:58 | |
Ответы с готовыми решениями:
10
Не работает часть кода с изменением динамического массива Отсортировать часть массива до максимального элемента по возрастанию, а оставшуюся часть по убыванию
|
165 / 82 / 32
Регистрация: 05.02.2010
Сообщений: 318
|
|||||||||||
22.03.2010, 15:33 | 2 | ||||||||||
это у тя динамич массив?
Добавлено через 1 минуту Есть приме не для динамич масиива ча напишу Добавлено через 17 секунд Есть приме не для динамич масиива ча напишу Добавлено через 2 минуты
0
|
13094 / 5875 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
|||||||||||
22.03.2010, 15:37 | 3 | ||||||||||
В динамических массивах нижняя граница индекса = 0 и изменить это значение нельзя. Можно только эмулировать. Например, так:
1
|
0 / 0 / 0
Регистрация: 12.12.2009
Сообщений: 37
|
|
22.03.2010, 16:04 [ТС] | 4 |
Спасибо!
Тогда ещё попутный вопрос. Когда я очищаю динамический массив, то пишу f := nil; И почему то во время выполнения программы делфи иногда ругается на эту запись, в том случае, если делфи её выполняет уже повторно. Но перед повторным выполнением массиву задавалась новая длина. В чём может быть причина? И есть ли аналог этого метода очищения массива?
0
|
13094 / 5875 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
|
22.03.2010, 18:13 | 6 |
Если элементами дин. массива F не являются данные другого дин. типа - тогда да - при выходе управления за пределы области определения переменной F произойдёт автоматическое освобождение памяти. Либо, если надо обнулить массив до прекращения процедуры, можно выполнить:
F := nil; Но если элементами дин. массива являются данные другого дин. типа, например, типа String, тогда необходимо освобождать память через: Finalize(F); Это гарантирует, что память также будет освобождена из под строк, записанных в массив. По идее, ошибок здесь быть не должно. - Если элементами массива являются нединамические типы (см. выше). Чтобы разобраться, мне надо посмотреть код или чать кода, где происходят эти действия. А что за ошибка возникает? Или это не ошибка, а предупреждение (Warning)?
1
|
24.03.2010, 19:08 | 7 | |||||
То есть если у меня есть например такая запись
0
|
13207 / 6595 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
|
||||||
24.03.2010, 19:18 | 8 | |||||
Тогда такой код:
0
|
24.03.2010, 19:23 | 9 |
Vovan-VE, наверно делфя смотрит что эта область ещё юзается и не очищает.... вот напридумывали....где очищается, где нет...это всё ещё и запомнить надо... и кто после этого скажет что легче стало жить программерам?
0
|
13207 / 6595 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
|
||||||
24.03.2010, 19:26 | 10 | |||||
АГа, понял, глядя в диспетчер задач. Таки, оно учитывает кол-во ссылок.
0
|
13094 / 5875 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
||||||||||||||||
24.03.2010, 21:57 | 11 | |||||||||||||||
В этом случае Finalize() применять необязательно. Т. к. Integer - не является динамическим типом:
Об устройстве динамических массивов здесь можете посмотреть. Там же приведены ссылки на статьи по дин. массивам и строкам.
1
|
24.03.2010, 21:57 | |
Помогаю со студенческими работами здесь
11
Создайте класс динамического массива, в котором реализована проверка выхода за границы массива Создайте класс динамического массива, в котором реализована проверка выхода за границы массива Функция с применением динамического массива, чтобы размер массива увеличивался по мере необходимости
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |