Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

линейный адрес матрицы

35K
15 ноября 2010 года
life4fun
64 / / 15.11.2010
Доброй ночи. Пожалуйста помогите найти линейный адрес матрицы:

float m[4][5][6];

m[2][3][4] - ?
26K
15 ноября 2010 года
U2D
34 / / 17.07.2007
*Дежавю*
Уже кто-то что-то подобное спрашивал.

Кажется, здесь.
35K
15 ноября 2010 года
life4fun
64 / / 15.11.2010
простите в той теме ваш ответ не понятен, и это немного не то что нужно найти. а найти нужно именно линейный адрес!, т.е. ответ должно быть число.
2.1K
15 ноября 2010 года
Norgat
452 / / 12.08.2009
если я правильно понял, что вы хотите
некий псевдокод для работы с массивом массивов массивов(кубом проще говоря)

 
Код:
type[][][] matr[n1][n2][n3];
type elem = matr[j][k];


если развернуть это дело в один массив, то работать с индексами нужно так:

 
Код:
type[] matr[n1 * n2 * n3];
type elem = matr[i*n1 + j*n2 + k];



п.с. нефиг даблы создавать, надо было уточнять вопрос в старой теме.
35K
15 ноября 2010 года
life4fun
64 / / 15.11.2010
Цитата: Norgat
если я правильно понял, что вы хотите
некий псевдокод для работы с массивом массивов массивов(кубом проще говоря)
 
Код:
type[][][] matr[n1][n2][n3];
type elem = matr[j][k];

если развернуть это дело в один массив, то работать с индексами нужно так:
 
Код:
type[] matr[n1 * n2 * n3];
type elem = matr[i*n1 + j*n2 + k];

п.с. нефиг даблы создавать, надо было уточнять вопрос в старой теме.



спасибо.

да, исходя из представления как куб - нужно найти линейный размер матрицы, данной в задаче, т.е. m[2][3][4] - ?

но я что-то всеравно не могу понять, ответ - должно быть число, именно математически посчитать необходимо (хоть и задание по программированию).

26K
16 ноября 2010 года
U2D
34 / / 17.07.2007
m[2][3][4]

Возможно, что вы ищете число 2*3*4 = 24.
То бишь 24 элемента.
35K
16 ноября 2010 года
life4fun
64 / / 15.11.2010
type[] matr[n1 * n2 * n3];
type elem = matr[i*n1 + j*n2 + k];

простите, а почему именно + k, а не +k*n3?

т.е. исходя из моей задачи, то решением ее будет:

float m[4][5][6];
m[2][3][4] - ?

m[2][3][4] = 2*4 + 3*5 + 4 = 8 + 15 + 4 = 27 ?
2.1K
16 ноября 2010 года
Norgat
452 / / 12.08.2009
Цитата: life4fun
type[] matr[n1 * n2 * n3];
type elem = matr[i*n1 + j*n2 + k];

простите, а почему именно + k, а не +k*n3?

т.е. исходя из моей задачи, то решением ее будет:

float m[4][5][6];
m[2][3][4] - ?

m[2][3][4] = 2*4 + 3*5 + 4 = 8 + 15 + 4 = 27 ?



я там немного ошибся вверху... формула будет выглядеть так: i*(n*m) + j*m + k

смысл такой:
i*(n*m) - сместиться на i двумерных матриц
j*m - сместиться на j строк в матрице
k - сместиться на k символов в строке

35K
16 ноября 2010 года
life4fun
64 / / 15.11.2010
Цитата:
type[][][] matr[n1][n2][n3];
type elem = matr[j][k]

type[] matr[n1 * n2 * n3];
type elem = matr[i*(n*m) + j*m + k];



а чему равно n? используемое во второй формуле (без индекса), если же вроде есть только n1, n2, n3... ?

2.1K
16 ноября 2010 года
Norgat
452 / / 12.08.2009
Цитата: life4fun
а чему равно n? используемое во второй формуле (без индекса), если же вроде есть только n1, n2, n3... ?



ну блин, ну подумай немного n = n1, m = n2, z = n3...

12K
16 ноября 2010 года
Ghox
297 / / 26.07.2009
Цитата: Norgat
ну блин, ну подумай немного n = n1, m = n2, z = n3...


Думаю, что немного неверно, и что на самом деле:

 
Код:
n = n2, m = n3

А значение n1 может понадобиться только в случае если нужно вычислить размер всего трёхмерного массива (или его последнего элемента).
35K
16 ноября 2010 года
life4fun
64 / / 15.11.2010
спасибо, понял, а вот z откуда?

или как понимаю z это k
35K
16 ноября 2010 года
life4fun
64 / / 15.11.2010
Цитата:
А значение n1 может понадобиться только в случае если нужно вычислить размер всего трёхмерного массива (или его последнего элемента).




так и необходимо вычислить линейный размер трехмерного массива!

12K
17 ноября 2010 года
Ghox
297 / / 26.07.2009
Цитата: life4fun
так и необходимо вычислить линейный размер трехмерного массива!


По-моему достаточно очевидно:
если массив задан как matr[n1][n2][n3]
то его размер (т.е. количество элементов в нём) равен n1 * n2 * n3.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог