Форум: "Начинающим";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];
ВнизАдресация элемента двумерного массива Найти похожие ветки
← →
SkyRanger © (2006-06-20 09:36) [0]Есть одномерный массив. Фактически это развернутыйв одну строку квадратный двумерный массив. Т.е. к элементу этого массива нужно обратится зная координаты [x,y]
Как получить непрерывный адрес в одномерном массиве. Что то меня клинит на этой элементарной операции...
← →
Сергей М. © (2006-06-20 09:42) [1]const
cols = 4;
rows = 4;
type
PLinearArray = ^TLinearArray;
TLinearArray = array[0..cols*rows-1] of sometype;
PSquareArray = ^TSquareArray;
TSquareArray = array[0..cols-1, 0..rows-1] of sometype;
..
var
arr: TLinearArray;
..
PSquareArray(@arr)[x,y] := somevalue;
← →
tButton © (2006-06-20 09:42) [2]n = y*width+x (-1 если индексация с нуля)
или
n = x*height+y (-1)
зависит от того как развёрнут массив
если построчно - первый вариант
если поколонно - второй
← →
SkyRanger © (2006-06-20 09:42) [3]Чтобы не было вопросов:
Есть матрица
1 2 3
4 5 6
7 8 9
На самом деле она реально хранится так:
1 2 3 4 5 6 7 8 9
Как мне получить например адрес элемента 5, зная его координаты - [2,2] ???
← →
SkyRanger © (2006-06-20 09:43) [4]ОГО!
Как быстро ответили! СПАСИБО :)
← →
tButton © (2006-06-20 09:44) [5]width = 3
x = 2
y = 2
n = (y-1) * 3 + (x - 1) +1
(5 = (2-1) * 3 + 1 + 1)
← →
tButton © (2006-06-20 09:45) [6]
> n = (y-1) * 3 + (x - 1) +1
n = (y-1) * width + (x - 1) +1
← →
tButton © (2006-06-20 09:46) [7]но это опять же если у тебя индексы идут [1..width*height]
← →
SkyRanger © (2006-06-20 09:49) [8]Угу дошло...
Мда.
Клинит, как клинит...
е унять эту злую клинь... :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c