Форум: "Начинающим";
Текущий архив: 2008.01.06;
Скачать: [xml.tar.bz2];
ВнизТранспонирование матрицы не заводя новой матрицы Найти похожие ветки
← →
Lip (2007-12-09 00:08) [0]Как траспонимаровать матрицу, если завести новый массив я знаю.
b[i, j] := a[j, i];
то есть просто меняем индексы.
Что делать в случае если нельзя завести новый массив?
Уже не знаю, сижу на листочке выписываю индексы, значения и не нахожу зависимости.
Подскажите, пожалуйста!
заранее благодарен!
← →
Zeqfreed © (2007-12-09 00:34) [1]http://en.wikipedia.org/wiki/In-place_matrix_transposition
← →
Servelat (2007-12-09 00:36) [2]Вопрос сводится к тому, как заставить две переменные поменяться значениями без использования третьей, а эта задача решается уж совсем просто (=.
← →
Anatoly Podgoretsky © (2007-12-09 00:59) [3]
> Что делать в случае если нельзя завести новый массив?
Это почему же нельзя?
← →
homm © (2007-12-09 01:01) [4]> [3] Anatoly Podgoretsky © (09.12.07 00:59)
> Это почему же нельзя?
Как вариант — размер исходного массива 1Гб.
← →
Anatoly Podgoretsky © (2007-12-09 01:06) [5]> homm (09.12.2007 01:01:04) [4]
А что и промежуточные переменные тоже 1 гб?
Сдается мне, что у автора учебное задание, а не реальная задача.
← →
Германн © (2007-12-09 01:12) [6]
> Сдается мне, что у автора учебное задание, а не реальная
> задача.
>
"И я, и я, и я того же мнения!"
(с) Ослик ИА
← →
TUser © (2007-12-09 01:41) [7]Выкинь бумажку. Тебе надо пробежаться в цикле по всем парам значений ([i,j],[j,i]). Ничто не помешает этого сделать парочкой вложенных циклов типа for.
← →
palva © (2007-12-09 12:59) [8]Матрица квадратная или прямоугольная?
← →
peregrooz (2007-12-09 21:43) [9]
> palva © (09.12.07 12:59) [8]
> Матрица квадратная или прямоугольная?
круглая
← →
palva © (2007-12-09 23:15) [10]
> > palva © (09.12.07 12:59) [8]
> > Матрица квадратная или прямоугольная?
> круглая
Согласен с Sergey Masloff из
http://delphimaster.net/view/15-1197218888/
Не тот здесь контингент. Ну да какой контингент растили, такой и получили.
← →
Lip (2007-12-10 17:34) [11]
> Матрица квадратная или прямоугольная?
Матрица прямоугольная.
Для квадратоной делал
так:for i := 1 to n do
for j := 1 to n do
b[i, j] := a[j, i];
Как для прямоугольной сделать, не заводя нового массива?
← →
Lip (2007-12-11 00:30) [12]Ну может кто подскажет?
← →
TUser © (2007-12-11 00:38) [13]> Как для прямоугольной сделать, не заводя нового массива?
А как она представляется программеру - как линейный массив? Или объявлена, как двумерный? В последнем случае - никак.
А если ты обращаешься к элементам по эдинственному индексу, то
до
[i,j]=W*(i-1)+j
после
[j,i]=H*(j-1)+i
ну и надо поставить [i,j] на место [j,i] в циклах, а потом заменить W и H.
Обозначения интуитивно понятны.
← →
@!!ex © (2007-12-11 00:41) [14]А через дополнительную переменную разве задача не решается?
Нафиг второй массив не нужен...
← →
TUser © (2007-12-11 07:30) [15]Зависит от спосба задания массива. Например, если объявлено
var A: array of array of ...
то можно как? Индексной арифметикой по [13] да. Но обращаться потом к элементам по двум индексам - как?
← →
wqeqweqweqw (2007-12-11 12:00) [16]и дополнительной не надо
a=a+b
b=a-b
a=a-b
второй массив объявим как тип линейного массива = размером нашему
заведем указатель на него и будем работать с ним (должно, думаю сработать)
← →
oldman © (2007-12-11 12:20) [17]
> wqeqweqweqw (11.12.07 12:00) [16]
А кто сказал, что матрица численная?
← →
korneley © (2007-12-11 12:59) [18]
> wqeqweqweqw (11.12.07 12:00) [16]
> ...второй массив объявим ...
Не монтируется с [0]
← →
Vlad Oshin © (2007-12-11 13:17) [19]
> korneley © (11.12.07 12:59) [18]
> как тип
это всего лишь тип, он память не жрет
> oldman © (11.12.07 12:20) [17]
надо значит правильно модифицировать данные :)
читал, про человека, который все в мире мог описать 1 числом? :))
← →
korneley © (2007-12-11 13:58) [20]
> Vlad Oshin © (11.12.07 13:17) [19]
> как тип это всего
> лишь тип, он память не жрет
Извини, сходу не въехал :) Но все равно, как ни крутись, приходим к TUser © (11.12.07 00:38) [13] плюс @!!ex © (11.12.07 00:41) [14]
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.01.06;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.013 c