|
|
|
Как Добавить строки в двумерный массив
|
|||
|---|---|---|---|
|
#18+
Понятное дело, ReDim Preserve не помогает..... как быть? ну например масив a_Arr(x,y) ----------------- на ум приходит вариант: создавать х-количество одномерных массивов а потом их объединить Понятно, что очень муторно при y>10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 23:21 |
|
||
|
Как Добавить строки в двумерный массив
|
|||
|---|---|---|---|
|
#18+
Vasilisk_andПонятное дело, ReDim Preserve не помогает..... как быть? ну например масив a_Arr(x,y) ----------------- на ум приходит вариант: создавать х-количество одномерных массивов а потом их объединить Понятно, что очень муторно при y>10Не совсем понимаю, почему не помогает. Например можно и трехмерный массив увеличивать: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 23:41 |
|
||
|
Как Добавить строки в двумерный массив
|
|||
|---|---|---|---|
|
#18+
ReDim Preserve может увеличить только крайний "член" массива, а надо a_aray=(1to10,1to10) ReDim Preserve a_aray(15,10) 'выдаст ошибку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2009, 00:46 |
|
||
|
Как Добавить строки в двумерный массив
|
|||
|---|---|---|---|
|
#18+
Djon Player, извиняюсь. ------------- надо чтоб Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2009, 00:50 |
|
||
|
Как Добавить строки в двумерный массив
|
|||
|---|---|---|---|
|
#18+
Vasilisk_andReDim Preserve может увеличить только крайний "член" массива, а надо a_aray=(1to10,1to10) ReDim Preserve a_aray(15,10) 'выдаст ошибкуПроверил, действительно выдаёт ошибку. Тогда может проще немного переделать код, чтобы изменению подвергался лишь крайний член массива. Это лучше, чем создание множества одномерных массивов. Хотя если у вас задача подразумевает изменение обоих границ массива, то этот способ не прокатит. Если бы точно знать, что одна из границ не превысит определенного максимума, то для этой границы установить максимум. Хотя конечно плохо, что зря будет использоваться память, но если этот максимум не очень большой, то не смертельно. Возможно можно вообще обойтись без двумерного массива, вдруг задачу можно решить по другому. Так-же вместо двумерного массива можно использовать одномерный массив, размерностью равно произведению размерностей двумерного массива. Например если у вас есть двумерный массив Код: plaintext Код: plaintext Код: plaintext Чтобы как-то уменьшить извращения можно написать функцию устанавливающую соответствие между одномерным и двухмерным массивом по принципу a(i,j)=b(jmax*(i-1)+j) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2009, 09:26 |
|
||
|
Как Добавить строки в двумерный массив
|
|||
|---|---|---|---|
|
#18+
Djon Player, Вот такой написал код, вроде работает, но громоздка Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. процедура для теста Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2009, 18:28 |
|
||
|
Как Добавить строки в двумерный массив
|
|||
|---|---|---|---|
|
#18+
Воспользовавшись идеей Djon Player был создан след код для добавления в "псевдо" двухмерный динамический массив Public любое кол-во строк или столбцов след. функция возвращает адрес "псевдо" массива: Код: plaintext 1. 2. эта функция увеличивает "псевдо" массив на to_i строк и to_j столбцов: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. для тестирования приведены две процедуры: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2009, 20:37 |
|
||
|
Как Добавить строки в двумерный массив
|
|||
|---|---|---|---|
|
#18+
Vasilisk_and, Посмотрел первый вариант реализации redimM(), понравился код, достаточно простой, я думал, что там всё намного сложнее. А вот в процедуре ar() мне кажется есть небольшая ошибка, а точнее один и тот-же код срабатывает дважды, хотя необходимости в этом нет, а именно тут Код: plaintext Получается, что дважды идёт изменение размерности массива a(), как мне кажется правильнее было бы примерно так Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2009, 09:26 |
|
||
|
Как Добавить строки в двумерный массив
|
|||
|---|---|---|---|
|
#18+
Vasilisk_and, Во второй реализации MRedim на первый взгляд код более сложный и скорее всего работает дольше чем первый, так как там два двойных вложенных цикла, а в первом коде лишь один двойной цикл. Более точно можно измерить счётчиком времени. Плюс во втором коде используются операции деления, их лучше поменьше использовать, они замедляют код. Если бы я воспользовался реализацией MRedim, то я бы взял первый вариант кода, он к тому-же и более понятный и более короткий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2009, 09:38 |
|
||
|
Как Добавить строки в двумерный массив
|
|||
|---|---|---|---|
|
#18+
Djon Player, 1. по поводу Код: plaintext 1. 2. Еще один минус 1-го способа: для изменения размерности массива, надо каждый раз создавать новый массив 2. Изначально мной была поставлена задача изменения диапазона двухмерного массива PUBLIC , без создания другого масива(, а переопределение сущ. массива), что на мой взгляд возможно только при пользовании 2 - го, более сложного кода, использовав функций t_a и redimM P.S. Заметил, что во втором коде лишнее Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2009, 16:04 |
|
||
|
Как Добавить строки в двумерный массив
|
|||
|---|---|---|---|
|
#18+
Vasilisk_andDjon Player, 1. по поводу Код: plaintext 1. 2. Почему не будет, у меня работает, или мы о разных вещах говорим, вот пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2009, 16:15 |
|
||
|
Как Добавить строки в двумерный массив
|
|||
|---|---|---|---|
|
#18+
Djon Player, И в правду Работает................ ????????????????????? !!!!!!!!!!!!!!!!!!!!!!!!!!! Значит я гений) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2009, 17:54 |
|
||
|
|

start [/forum/topic.php?fid=61&fpage=177&tid=2178748]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 368ms |

| 0 / 0 |
