(* Дана квадратная матрица. Поменять строки:первую с последней,вторую с предпоследней и т.д *)
program p174784;
uses
crt;
const
MaxSize = 100;
type
TMatrix = object
rows: integer;
cols: integer;
ar: array[1..MaxSize, 1..MaxSize] of integer;
procedure swap(row1: integer; row2: integer);
{ обмен строк }
procedure print;
{ печать матрицы }
constructor init(InitRows, InitCols: integer);
{ создание матрицы с используемым размером InitRows * InitCols }
end;
var
mat: TMatrix;
r,c: integer;
mPtr: ^TMatrix; { указатель на объект, содержащий матрицу 100*100 }
constructor TMatrix.init(InitRows, InitCols: integer);
var
r,c: integer;
begin
rows := InitRows;
cols := InitCols;
Randomize;
for r:= 1 to rows do
for c := 1 to cols do
ar[r,c] := random(256);
end; { init }
procedure TMatrix.swap(row1: integer; row2: integer);
var
col: integer;
tmp: integer;
begin
for col:= 1 to cols do
begin
tmp := ar[row1, col];
ar[row1, col] := ar[row2, col];
ar[row2, col] := tmp;
end;
end; { swap }
procedure TMatrix.print;
var
r,c: integer;
begin
writeln;
for r:= 1 to rows do
begin
for c:= 1 to cols do
write(ar[r,c]:4);
writeln;
end;
end; { print }
begin { main }
clrscr;
{ динамически выделяем память для объекта типа TMat
и заполняем часть массива 5*5 случайным образом }
new(mPtr, Init(5,5));
writeln('Создана матрица');
mPtr^.print;
{============================================}
for r:= 1 to mptr^.rows div 2 do
mPtr^.swap(r,mptr^.rows-r+1); { обмен строк 1 и rows, 2 и rows-1 }
{============================================}
writeln('Матрица после обмена строк');
mPtr^.print;
dispose(mPtr); { объект не нужен, освободили память }
readln;
end.
program p174784b;
uses
crt;
const
n=8;
var
tmp: integer;
i,j: integer;
a: array[1..n,1..n] of integer;
begin
clrscr;
randomize;
for i:=1 to n do
for j:=1 to n do
a[i,j]:=random(10);
writeln('Матрица до');
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:3);
writeln;
end;
for i:= 1 to n div 2 do
for j:= 1 to n do
begin { обмен }
tmp:= a[i,j];
a[i,j] := a[n-i+1,j];
a[n-i+1,j] := tmp;
end;
writeln('Матрица после');
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:3);
writeln;
end;
readln
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.