Подскажите,пожалуйста,как транспонировать квадратную матрицу без использования вспомогательной.
мисс_граффити
20.04.2007 20:00
for i2:=0to m-1dofor j2:=0to i2 dobegin
vsp:=A2[i2,j2];
A2[i2,j2]:=A2[j2,i2];
A2[j2,i2]:=vsp;
end;
liash-7
20.04.2007 20:45
Спаисбо!
Nymph
18.07.2007 1:04
Помогите плиз! Мне надо транспонировать ПРЯМОУГОЛЬНУЮ матрицу без использования вспомогательной.
мисс_граффити
18.07.2007 1:09
по-моему, это невозможно размерность меняется. то есть либо работать с динамическими структурами, либо выделять память с запасом и забивать пустое место нулями
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 ?
P.S. Я надеюсь, понятно, что функции при описании типов/переменных использовать нельзя, и то что я привел - всего лишь псевдокод? Это я тем любителям находить ЧУЖИЕ ошибки, которые сюда сейчас налетят под маской гостей
Гость
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. Пробовала много вариантов, но в матрице либо не меняется последний столбик, либо вместо него нули или еще какая-нибудь ерунда
Гость
18.07.2007 2:10
Я написала, но только по-читерски=)
if m>n then t:=m else t:=n;
for i:=1to t-1dofor j:=i+1to t dobegin
sub:=a[i,j];
a[i,j]:=a[j,i];
a[j,i]:=sub;
end;
...
for i:=1to n dobeginfor j:=1to m do write(a[i,j]:3);
writeln;
end;
Получается, что транспонируется квадратная матрица, а потом уже выводится то, что надо. Не знаю, прокатит ли=)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.