Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Транспонирование без вспомогательной матрицы

Автор: liash-7 20.04.2007 19:24

Подскажите,пожалуйста,как транспонировать квадратную матрицу без использования вспомогательной.

Автор: мисс_граффити 20.04.2007 20:00

 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 20.04.2007 20:45

Спаисбо! good.gif

Автор: Nymph 18.07.2007 1:04

Помогите плиз!
Мне надо транспонировать ПРЯМОУГОЛЬНУЮ матрицу без использования вспомогательной.

Автор: мисс_граффити 18.07.2007 1:09

по-моему, это невозможно sad.gif размерность меняется. то есть либо работать с динамическими структурами, либо выделять память с запасом и забивать пустое место нулями

Автор: volvo 18.07.2007 1:10

Цитата
Мне надо транспонировать ПРЯМОУГОЛЬНУЮ матрицу

Покажи, как у тебя описана исходная матрица в таком случае... Что во что ты собрался транспонировать?

Автор: Nymph 18.07.2007 1:19

Ну задание звучит так: Выполнить операцию транспонирования прямоугольной матрицы A(m,n) m<>n, не выделяя дополнительного массива для хранения результата.
Должна получиться матрица A(n,m)

Автор: volvo 18.07.2007 1:26

Я не спрашивал, как звучит задание... Я спросил, как ты собрался при описании, скажем
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

Автор: Гость 18.07.2007 1:40

Цитата

Я спросил, как ты собрался при описании, скажем
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

Автор: Гость 18.07.2007 2:10

Я написала, но только по-читерски=)

  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;



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