Помощь - Поиск - Пользователи - Календарь
Полная версия: Цикл транспонирования прямоугольной матрицы.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Axeo
Неважно как задается матрица. Главное использование массива.
Пожалуйста, подскажите сам цикл, че то никак врубиться не могу....
Если еще будет возможность прописать через процедуру, на седьмом небе окажусь!
Заранее спасибо!


Код
for i:=1 to n do
for j:=1 to n do matr2[i,j]:=matr1[j,i]

для прямоугольной такой вариант не катит...
volvo
Описание массива, с которым это все будет производиться, можно увидеть? Как ты собрался транспонировать матрицу (2x3) в матрицу (3x2) в RunTime?
MAXXX
А как ты собираешся транспонировать данные из матрицы размером(м*н) в (н*м) Другое дело, если у тебя обе матрицы размера макс(м*н), но значущие только м*н еементов 1-ой матрицы
Тогда твой код должен проходить
Вот примерная реализация
Код

Const maxn=100;
         maxm=100;
Var matr1,matr2:array[1..maxn,1..maxm] of Integer;
      n,m,i,j:Integer;
begin
{ввод н,м,таблицы}
For i:=1 to n do
For j:=1 nto m do
matr2[j,i]:=matr1[i,j];
{вывод в цикле
For i:=1 to m do
For j:=1 to n do
Write(a[i,j]}
end.
Axeo
В общем, вопрос наверное уже не актуален...

Работает такой вариант:

Код
program laba8v1;
var a:array[1..19, 1..19] of real;
    b:array[1..19, 1..19] of real;
    c,n,m,i,j,s,k:integer;

Begin
writeln('stroki n,stolbci m:');
readln(n,m);
writeln('Matrix A:');
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(10);
write(a[i,j]:4:0);
end;
writeln;
end;
readln;
for j:=1 to m do
begin
for i:=1 to n do
begin
write(a[i,j]:4:0);
end;
writeln;
end;
writeln;
readln;
end.



Не знаю чего я тупил =/

Добавлено через 1 мин.
Цитата(MAXXX @ 18.05.2007 22:40) *

А как ты собираешся транспонировать данные из матрицы размером(м*н) в (н*м) Другое дело, если у тебя обе матрицы размера макс(м*н), но значущие только м*н еементов 1-ой матрицы
Тогда твой код должен проходить
Вот примерная реализация
Код

Const maxn=100;
         maxm=100;
Var matr1,matr2:array[1..maxn,1..maxm] of Integer;
      n,m,i,j:Integer;
begin
{ввод н,м,таблицы}
For i:=1 to n do
For j:=1 nto m do
matr2[j,i]:=matr1[i,j];
{вывод в цикле
For i:=1 to m do
For j:=1 to n do
Write(a[i,j]}
end.




Этот вариант обрезает значения если n не равно m. Вроде....хммм
мисс_граффити
извините меня, конечно... но в математике операция транспонирования определена только для квадратных матриц. у прямоугольных и диагонали-то как таковой нет...
volvo
Юля, ты чего? blink.gif
1 2 3
4 5 6
я не могу транспонировать (в математике) в
1 4
2 5
3 6
?
мисс_граффити
Все. Больше после изучения философии в 4 утра не буду на форум писать... mega_chok.gif
Сорри.
Мне стыдно.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.