G-UniT
16.05.2005 - 00:12
Помогите решить задачу! или хотя бы дайте ссылку где можно найти что-нибудь подобное. Всем буду ооочень благодарен.
Дана квадратная матрица NxN состоящая из натуральных чисел. Необходимо зеркально отразить ее элементы относительно горизонтальной оси симметрии.
Вывести результаты на экран.
Например для матрицы 3х3 это преобразование будет выглядеть так :
А11 А12 А13
А21 А22 А23
А31 А32 А33
↓
А31 А32 А33
А21 А22 А23
А11 А12 А13
PS: задача должна быть решена на языке Паскаль.
Alenushka
16.05.2005 - 19:17
Если еще никто не написал, то мой вариант.
const n=3;
var mat: array [0..n-1,0..n-1] of integer;
i,j,m:integer;
BEGIN
... //заполнение матрицы
for i:=0 to (n div 2)-1 do
for j:=0 to n-1 do
begin
m:=mat[i,j];
mat[i,j]:=mat[n-1-i,j];
mat[n-1-i,j]:=m;
end;
.... //вывод результатов
END.
че и как делать:
1 объявить матрицу и переменные
2 заполнить матрицу, например - случайными числами в 2-x циклах for
3 с помошью двух вложенных циклов выполнить "зеркальную перестановку" - Alenushka уже написала, как
4 вывести на экран матрицу - в 2-x циклах for
1,2 и 4 есть в любом примере с матрицами
G-UniT
18.05.2005 - 13:07
Всем спасибо.
Задача решена,вот ее решение(может кому-то пригодится).
var mat:array[1..10,1..10] of byte;
x,y:integer;
t:byte;
n:byte;
begin
writeln('Enter matrix long ( max=10 min = 2 )');
readln(n);
for y:=1 to n do for x:=1 to n do begin
writeln('Enter ',x,' ',y,' element of matrix');
readln(mat[x,y]);
end;
for y:=1 to n do begin
for x:=1 to n do write(mat[x,y]:4,' ');
writeln;
end;
for y:=1 to (n div 2) do
for x:=1 to n do begin
t:=mat[x,y];
mat[x,y]:=mat[x,(n+1)-y];
mat[x,(n+1)-y]:=t;
end;
writeln('after');
for y:=1 to n do begin
for x:=1 to n do write(mat[x,y]:4,' ');
writeln;
end;
readln
end.
Fast Reply:
Powered by dgreen
Здесь расположена полная версия этой страницы.