Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1197273446
m
2007-12-10 10:57
2008.01.06
Delphi + FireBird


6-1177360433
Sergey M.
2007-04-24 00:33
2008.01.06
Delphi&Cgi


2-1197356647
dumka
2007-12-11 10:04
2008.01.06
Строки


2-1197279695
fics
2007-12-10 12:41
2008.01.06
Мерцание раб области


2-1197363838
Molodoi
2007-12-11 12:03
2008.01.06
DBGridEh





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский