Ввести целую квадратную матрицу A (N,N) (N<=10) Из положительных ее элементов сформировать файл F. Из файла F сформировать файл G, в который сначала записать сумму всех элементов файла F, затем максимальное значение файла F, затем все его компоненты в обратном порядке. Файл G выдать на печать.
program Project3;
const
Nmax = 10;
Kmax = Nmax*Nmax;
type
MATRIX = array[1..Nmax,1..Nmax] of integer;
aFile = File of integer;
VECTOR = array[1..Kmax] of integer;
var
A : matrix;
N : integer;
F : aFile;
G : aFile;
procedure EnterMatrix(var X : matrix; var aN : integer; ch : char);
var
i,j : integer;
begin
write('Vvedite razmernost matrizi: ');
readln(aN);
for i := 1 to aN do
for j := 1 to aN do
begin
write(ch,'[',i,',',j,']=');
readln(X[i,j]);
end;
end;
Procedure CreateF(Const x : Matrix; aN : integer; var aF : aFile);
Var
i:integer;
j:integer;
Begin
Rewrite (aF);
for i:=1 to N do
begin
for j:=1 to N do
if x[i,j]>0 then
Write (aF,A[i,j]);
end;
Close (aF);
end;
function Sum(var aF : aFile): integer;
var
S,X : integer;
begin
Reset(aF);
S:=0;
while not EOF(aF) do
begin
read(aF,X);
S:=S+X;
end;
Sum:=S;
close(aF);
end;
function Maximum(var aF : aFile): integer;
var
Y,x,max : integer;
begin
Reset(aF);
read(aF,Y);
max:=Y;
while not EOF(aF) do
begin
read(aF,x);
if Y<x
then begin
max:=x;
end;
Y:=x;
end;
Maximum:=max;
Close(aF);
end;
procedure Preobr(var aF,aG : aFile);
var
X,i,S,max : integer;
begin
Reset(aF);
ReWrite(aG);
S:=Sum(aF);
max:=Maximum(aF);
write(aG,S);
write(aG,Max);
for i := FileSize(aF)-1 downto 0 do
begin
read(aF,X);
write(aG,X);
end;
Close(aF);
Close(aG);
end;
procedure OutFile(var aG : aFile; ch : char);
var
X1 : integer;
begin
Reset(aG);
while not EOF(aG) do
begin
read(aG,X1);
writeln(ch,'[',FilePos(aG),']=',X1:4);
end;
Close(aG);
end;
begin
Assign(F,'F.dat');
Assign(G,'G.txt');
EnterMatrix(A,N,'A');
CreateF(A,N,F);
Preobr(F,G);
OutFile(G,'G');
readln;
end.