Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.06;
Скачать: CL | DM;

Вниз

Транспонирование матрицы не заводя новой матрицы   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.013 c
15-1196672711
Kerk
2007-12-03 12:05
2008.01.06
Одно и то же в разных источниках


15-1196689348
Сергей М.
2007-12-03 16:42
2008.01.06
bash


15-1196511475
helpme
2007-12-01 15:17
2008.01.06
Странная повестка, помогите разобраться.


2-1197230296
alikon1
2007-12-09 22:58
2008.01.06
Как получить данные из таблицы.


2-1197037104
Nikfel
2007-12-07 17:18
2008.01.06
Получение времени работы компьютера.