![]() |
Модераторы: volvo877, Snowy, MetalFan |
![]() ![]() ![]() |
|
digitech |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 1.4.2007 Репутация: нет Всего: 1 |
Нельзя ли никак сгруппировать схожие процедуры, и оформить их в виде процедур с параметрами?
Вот процедуры ввода, вывода, произвольного заполнения:
Можно вот так сделать, чтобы, к примеру, выводить массив A writeArray(A); {вывод массива A} типа такого что-нибудь? |
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
|
|||
|
||||
digitech |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 1.4.2007 Репутация: нет Всего: 1 |
А как сделать процедуру с параметрами переменными для двумерного массива (матриц)?
Вот так не работает:
|
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Правильно, и не будет... Так можно передавать только одномерные массивы... Но можно чуть-чуть подкрутить, и оно заработает. Вот пример:
|
|||
|
||||
digitech |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 1.4.2007 Репутация: нет Всего: 1 |
А что эта формула в функции делает. И как её вывели?
Я понимаю что она передаёт строку/столбец массиву arr[index(i,j)], а почему именно через функцию, да и ещё вот так index[i,j] Вобщем я как-то не очень понял про функцию Это сообщение отредактировал(а) digitech - 23.1.2008, 00:39 |
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Тебе надо из координат двумерного массива размером row на col получить порядковый номер элемента, считая слева - направо сверху - вниз (то есть, другими словами, в процедуру передается одномерный массив: исходный двумерный, "растянутый" строка за строкой: сначала col элементов первой строки, следом - еще col элементов второй, и так далее. Тебе надо по двумерным координатам вычислить, каким по счету будет этот элемент в одномерном массиве).
Как это сделать? Правильно, берем номер строки, отнимает от него 1 и умножаем на размер строки (т.о., посчитали, сколько элементов содержится в предыдущих строках...). Добавляем номер элемента в текущей строки, а поскольку индексация в одномерном массиве, передаваемом в процедуру, начинается с нуля (всегда!!! в случае открытого массива), то еще от всего этого отнимаем единицу... А почему функция - чтобы минимизировать возможные изменения. Вот тебе сегодня надо работать с двумерным массивом, а завтра - понадобится одномерный. Поменяешь одну функцию, вычисляющую позицию элемента, и все будет так же работать. А послезавтра захочется работать с трехмерным массивом, и опять достаточно будет только изменить функцию, не прикасаясь к логике работы программы. Это ты у меня в программе где-то видел? Тогда покажи, где! У меня не было такого обращения к index, потому как это - функция, а не массив... Не надо приписывать мне то, что я не делал... |
|||
|
||||
digitech |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 1.4.2007 Репутация: нет Всего: 1 |
Нет, я не приписаваю, просто не дописал, вот так у вас (arr[index(i, j)]). В след. раз буду дописывать |
|||
|
||||
digitech |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 1.4.2007 Репутация: нет Всего: 1 |
А вот если используешь эту процедуру для одного массива и для другого, то оба массива получаются одинаковы. Как можно исправить?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi" | |
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |