Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Сообщение от Madara
Пробовал через одну переменную сделать, не получилось(
|
Хорошо, попробуйте предложить такой вариант:
Код:
Type
Vector=Array[1..5] of Integer;
Matr=Array[1..5] of Vector;
Var
A,B:Matr;
p,q:Integer;
Procedure Izmena(s1,s2:Integer; Var C:Matr);
var
V:Vector;
begin
V:=C[s1];
C[s1]:=C[s2];
C[s2]:=V;
end;
Begin
A[1,1]:=3; A[1,2]:=2; A[1,3]:=4; A[1,4]:=1;
A[2,1]:=5; A[2,2]:=2; A[2,3]:=3; A[2,4]:=1;
A[3,1]:=6; A[3,2]:=4; A[3,3]:=5; A[3,4]:=1;
B[1,1]:=3; B[1,2]:=2; B[1,3]:=5; B[1,4]:=1; B[1,5]:=7;
B[2,1]:=9; B[2,2]:=1; B[2,3]:=2; B[2,4]:=6; B[2,5]:=5;
B[3,1]:=1; B[3,2]:=8; B[3,3]:=4; B[3,4]:=7; B[3,5]:=1;
B[4,1]:=2; B[4,2]:=0; B[4,3]:=9; B[4,4]:=3; B[4,5]:=5;
B[5,1]:=7; B[5,2]:=2; B[5,3]:=3; B[5,4]:=1; B[5,5]:=4;
Writeln('Исходная матрица А:');
for p:=1 to 3 do
begin
for q:=1 to 4 do Write(A[p,q]:3);
writeln;
end;
writeln;
Writeln('Исходная матрица В:');
for p:=1 to 5 do
begin
for q:=1 to 5 do Write(B[p,q]:3);
writeln;
end;
writeln;
Izmena(2,3,A);
Izmena(2,4,B);
Writeln('Меняем строки');
Writeln;
Writeln('Измененная матрица А:');
for p:=1 to 3 do
begin
for q:=1 to 4 do Write(A[p,q]:3);
writeln;
end;
writeln;
Writeln('Измененная матрица В:');
for p:=1 to 5 do
begin
for q:=1 to 5 do Write(B[p,q]:3);
writeln;
end;
End.
А не понравится - можно и так (скорее всего, Ваш многоуважаемый имел в виду что-то в этом роде):
Код:
Type
Matr=Array[1..5,1..5] of Integer;
Var
A,B:Matr;
p,q:Integer;
Procedure Izmena(s1,s2:Integer; Var C:Matr);
var
j,D:Integer;
begin
for j:=1 to 5 do
begin
D:=C[s1,j];
C[s1,j]:=C[s2,j];
C[s2,j]:=D;
end;
end;
Begin
A[1,1]:=3; A[1,2]:=2; A[1,3]:=4; A[1,4]:=1;
A[2,1]:=5; A[2,2]:=2; A[2,3]:=3; A[2,4]:=1;
A[3,1]:=6; A[3,2]:=4; A[3,3]:=5; A[3,4]:=1;
B[1,1]:=3; B[1,2]:=2; B[1,3]:=5; B[1,4]:=1; B[1,5]:=7;
B[2,1]:=9; B[2,2]:=1; B[2,3]:=2; B[2,4]:=6; B[2,5]:=5;
B[3,1]:=1; B[3,2]:=8; B[3,3]:=4; B[3,4]:=7; B[3,5]:=1;
B[4,1]:=2; B[4,2]:=0; B[4,3]:=9; B[4,4]:=3; B[4,5]:=5;
B[5,1]:=7; B[5,2]:=2; B[5,3]:=3; B[5,4]:=1; B[5,5]:=4;
Writeln('Исходная матрица А:');
for p:=1 to 3 do
begin
for q:=1 to 4 do Write(A[p,q]:3);
writeln;
end;
writeln;
Writeln('Исходная матрица В:');
for p:=1 to 5 do
begin
for q:=1 to 5 do Write(B[p,q]:3);
writeln;
end;
writeln;
Izmena(2,3,A);
Izmena(2,4,B);
Writeln('Меняем строки');
Writeln;
Writeln('Измененная матрица А:');
for p:=1 to 3 do
begin
for q:=1 to 4 do Write(A[p,q]:3);
writeln;
end;
writeln;
Writeln('Измененная матрица В:');
for p:=1 to 5 do
begin
for q:=1 to 5 do Write(B[p,q]:3);
writeln;
end;
End.
Цитата:
Сообщение от Madara
P.S. немного изменил программу...
|
Ох, уж и изменили... Ну зачем, объясните Вы мне, присвоение исходных значений элементов матриц загонять ВНУТРЬ тела цикла?!!! Таким образом, для первой матрицы Вы осуществляете это присвоение 12 раз, а для второй - 25 раз!!!! Оно Вам надо?
Между прочим, по моему разумению, именно на этот момент должен был в первую очередь обратить внимание почтеннейший, вместо того, чтобы ловить блох в части оптимизации алгоритма обмена строк.
|