Помощь - Поиск - Пользователи - Календарь
Полная версия: Транспонирование без вспомогательной матрицы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
liash-7
Подскажите,пожалуйста,как транспонировать квадратную матрицу без использования вспомогательной.
мисс_граффити
 for i2:=0 to m-1 do
for j2:=0 to i2 do
begin
vsp:=A2[i2,j2];
A2[i2,j2]:=A2[j2,i2];
A2[j2,i2]:=vsp;
end;
liash-7
Спаисбо! good.gif
Nymph
Помогите плиз!
Мне надо транспонировать ПРЯМОУГОЛЬНУЮ матрицу без использования вспомогательной.
мисс_граффити
по-моему, это невозможно sad.gif размерность меняется. то есть либо работать с динамическими структурами, либо выделять память с запасом и забивать пустое место нулями
volvo
Цитата
Мне надо транспонировать ПРЯМОУГОЛЬНУЮ матрицу

Покажи, как у тебя описана исходная матрица в таком случае... Что во что ты собрался транспонировать?
Nymph
Ну задание звучит так: Выполнить операцию транспонирования прямоугольной матрицы A(m,n) m<>n, не выделяя дополнительного массива для хранения результата.
Должна получиться матрица A(n,m)
volvo
Я не спрашивал, как звучит задание... Я спросил, как ты собрался при описании, скажем
var matrix: array[1 .. 2, 1 .. 3] of integer; получить в результате матрицу array[1 .. 3, 1 .. 2] of integer ?

Читай ответ мисс_граффити, и описывай матрицу как
mx: Array[1 .. max(m, n), 1 .. max(m, n)] of integer;
. Вот ее можно будет транспонировать.

P.S. Я надеюсь, понятно, что функции при описании типов/переменных использовать нельзя, и то что я привел - всего лишь псевдокод? Это я тем любителям находить ЧУЖИЕ ошибки, которые сюда сейчас налетят под маской гостей dry.gif
Гость
Цитата

Я спросил, как ты собрался при описании, скажем
var matrix: array[1 .. 2, 1 .. 3] of integer; получить в результате матрицу array[1 .. 3, 1 .. 2] of integer ?


Ну это и ежу понятно, что так не получится)))
Я описала матрицу A:array[1..100,1..100] of integer; потом в проге задается кол-во строк и столбцов. Ну например 5 и 4. Пробовала много вариантов, но в матрице либо не меняется последний столбик, либо вместо него нули или еще какая-нибудь ерунда wacko.gif
Гость
Я написала, но только по-читерски=)

  if m>n then t:=m else t:=n;
for i:=1 to t-1 do
for j:=i+1 to t do begin
sub:=a[i,j];
a[i,j]:=a[j,i];
a[j,i]:=sub;
end;
...
for i:=1 to n do begin
for j:=1 to m do write(a[i,j]:3);
writeln;
end;



Получается, что транспонируется квадратная матрица, а потом уже выводится то, что надо. Не знаю, прокатит ли=)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.