есть матрица квадратная. размерность 2*n поменять по часовой стрелке ее блоки размерами n*n подскажите в чем ошибка
procedure Smena(var A,B:matrix; n,m:integer);
var i,j:integer;
beginfor i:=1to n dofor j:=1to n do
B[i,j+n]:=A[i,j];
for i:=1to n dofor j:=n+1to m do
B[i+n,j]:=A[i,j];
for i:=n+1to m dofor j:=n+1to m do
B[i,j-n]:=A[i,j];
for i:=n+1to m dofor j:=1to n do
B[i-n,j]:=A[i,j];
end;
Lapp
2.12.2009 22:41
Цитата(Mavra @ 2.12.2009 18:08)
есть матрица квадратная. размерность 2*n поменять по часовой стрелке ее блоки размерами n*n подскажите в чем ошибка
вот так попробуй:
procedure Smena(var A,B:matrix; n:integer);
var
i,j:integer;
begin{
A B
D C
}for i:=1to n dofor j:=1to n do B[i ,j+n] := A[i ,j ]; {A -> B}for i:=1to n dofor j:=1to n do B[i+n,j+n] := A[i ,j+n]; {B -> C}for i:=1to n dofor j:=1to n do B[i+n,j ] := A[i+n,j+n]; {C -> D}for i:=1to n dofor j:=1to n do B[i ,j ] := A[i+n,j ]; {D -> A}end;
Добавлено через 5 мин. А при чем тут Делфи?..
М
Переношу в Задачи.
Пожалуйста, относись к выбору раздела ответственнее, не заставляй других делать за тебя..
Mavra
2.12.2009 22:48
вся матрица заполняется левой половиной первой строки...
Добавлено через 5 мин. правильно перемещается только первая строка из B и из D
Lapp
2.12.2009 22:54
н-да, что-то у меня крыша едет... простите, плиз. Вот так, конечно:
procedure Smena(var A,B:matrix; n:integer);
var
i,j:integer;
begin{
A B
D C
}for i:=1to n dofor j:=1to n dobegin
B[i ,j+n] := A[i ,j ]; {A -> B}
B[i+n,j+n] := A[i ,j+n]; {B -> C}
B[i+n,j ] := A[i+n,j+n]; {C -> D}
B[i ,j ] := A[i+n,j ]; {D -> A}end;
end;
Сорри
Добавлено через 2 мин.
Цитата(Mavra @ 2.12.2009 18:48)
вся матрица заполняется левой половиной первой строки...
Что?.. Ты про что? про мою программу?... Будь так добра, пожалуйста, если тебе не очень трудно, приведи полный код.