Двумерные массивы [Pascal]
Повернуть я повернул, но вот не в ту сторону. Оказывается, что моя программа поворачивает матрицу влево, а не вправо, и у меня не получается это исправить:(
Помогите пожалуйста:)
Код:
var
a:array[1..5,1..5] of integer;
i,j,k,p,x:integer;
begin
randomize();
writeln('vhodnaya matrica:');
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
a[i,j] := random(9)+1;
write(a[i,j], ' ');
end;
writeln;
end;
p:=5 div 2;
for k:=1 to p do
for j:=k to 5-k do
begin
x:=a[k,j];
a[k,j]:=a[j,5-k+1];
a[j,5-k+1]:=a[5-k+1,5-j+1];
a[5-k+1,5-j+1] := a[5-j+1,k];
a[5-j+1,k]:=x;
end;
writeln ('Povorot na 90 gradusov vpravo');
for i:=1 to 5 do
begin
for j:=1 to 5 do
write(a[i,j], ' ');
writeln;
end;
readln
end.
a:array[1..5,1..5] of integer;
i,j,k,p,x:integer;
begin
randomize();
writeln('vhodnaya matrica:');
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
a[i,j] := random(9)+1;
write(a[i,j], ' ');
end;
writeln;
end;
p:=5 div 2;
for k:=1 to p do
for j:=k to 5-k do
begin
x:=a[k,j];
a[k,j]:=a[j,5-k+1];
a[j,5-k+1]:=a[5-k+1,5-j+1];
a[5-k+1,5-j+1] := a[5-j+1,k];
a[5-j+1,k]:=x;
end;
writeln ('Povorot na 90 gradusov vpravo');
for i:=1 to 5 do
begin
for j:=1 to 5 do
write(a[i,j], ' ');
writeln;
end;
readln
end.
Дурачок, поверни ж ее влево 3 раза!
Но всё равно спасибо, Phodopus.
С горем пополам я переделал программу) Работает вроде бы правильно, преподаватель засчитал мне её. Вот сам листинг.
Код:
uses crt;
const n=5;
var
a : array[1..n,1..n] of integer;
i,p,k,tmp1 : integer;
begin
clrscr;
randomize;
{zapolnenie ishodnogo massiva}
writeln ('Ishodniy massiv:');
for i:=1 to n do
begin
for k:=1 to n do
begin
a[i,k] := random(99);
write(a[i,k]:3);
end;
writeln;
end;
writeln;
{povorot}
p := n div 2;
for i:=1 to p do
begin
for k:=i to n-i do
begin
tmp1:=a[i,k];
a[i,k]:=a[n-k+1,i];
a[n-k+1,i]:=a[n-i+1,n-k+1];
a[n-i+1,n-k+1]:=a[k,n-i+1];
a[k,n-i+1]:=tmp1;
end;
end;
{vyvod poluchenogo massiva}
writeln ('Massiv s povorotom:');
for i:=1 to n do
begin
for k:=1 to n do
write(a[i,k]:3);
writeln;
end;
readln;
end.
const n=5;
var
a : array[1..n,1..n] of integer;
i,p,k,tmp1 : integer;
begin
clrscr;
randomize;
{zapolnenie ishodnogo massiva}
writeln ('Ishodniy massiv:');
for i:=1 to n do
begin
for k:=1 to n do
begin
a[i,k] := random(99);
write(a[i,k]:3);
end;
writeln;
end;
writeln;
{povorot}
p := n div 2;
for i:=1 to p do
begin
for k:=i to n-i do
begin
tmp1:=a[i,k];
a[i,k]:=a[n-k+1,i];
a[n-k+1,i]:=a[n-i+1,n-k+1];
a[n-i+1,n-k+1]:=a[k,n-i+1];
a[k,n-i+1]:=tmp1;
end;
end;
{vyvod poluchenogo massiva}
writeln ('Massiv s povorotom:');
for i:=1 to n do
begin
for k:=1 to n do
write(a[i,k]:3);
writeln;
end;
readln;
end.