Значит, так.
1. Ни ABC, ни тем более ABC Net, у меня нету, поэтому программа написана на Turbo (Free) Pascal; впрочем, не думаю, что это существенно.
2. Вы не соблаговолили выложить хотя бы примеры матриц для считывания и обработки, и я даже не в курсе:
– какова их размерность?
– одинаковый у них размер или разный?
– квадратные они или прямоугольные?
а тянуть из Вас информацию, извините, "клещами" — с какой стати?
Поэтому в программе принято:
1. Обе матрицы — квадратные, размерности NхN.
2. Поскольку файл с матрицами не предоставлен, в программе применена генерация случайных чисел.
3. При вычислении средних арифметических предполагается, что в обеих матрицах есть хотя бы один элемент, для которого выполняется условие f(x[i,j])>0; защита от невыполнения этого предположения в программе не предусмотрена (при невыполнении возникает деление на 0).
Вроде всё.
Код:
Const
N=5; {Matrix dimension}
Type
Ar=Array[1..N,1..N] of real;
Vc=Array[1..N] of Integer;
Var
i,j,func_num:Integer;
M1,M2:Ar;
Y:Vc;
Ar_m1, Ar_m2, Maximal:Real;
Function f1(x:real):real;
begin
f1:=x;
end;
Function f2(x:real):real;
begin
f2:=Sin(x)+Cos(x);
end;
Function f(x:real;vr:integer):real;
begin
if vr=1 then f:=f1(x) else f:=f2(x);
end;
Function Arithmetic_mean(Z:Ar;vr:integer):Real;
var
p,q,El_num:integer;
Sum:Real;
begin
Sum:=0;
El_num:=0;
for p:=1 to N do
for q:=1 to N do
if f(Z[p,q],vr)>=0 then
begin
Inc(El_num);
Sum:=Sum+Z[p,q];
end;
Arithmetic_mean:=Sum/El_num;
end;
Procedure Vect_form(Z:Ar; var Vz:Vc);
var
p,q:Integer;
b:boolean;
begin
for q:=1 to N do
begin
b:=false;
for p:=1 to N do
if Z[p,q]<0 then b:=true;
if b then Vz[q]:=0 else Vz[q]:=1;
end;
end;
Function Max_el(Z:Ar):Real;
var
p,q:integer;
Mx:Real;
begin
Mx:=Z[1,1];
for p:=1 to N do
for q:=1 to N do
if Z[p,q]>Mx then Mx:=Z[p,q];
Max_el:=Mx;
end;
Begin
Randomize;
for i:=1 to N do
for j:=1 to N do
begin
M1[i,j]:=(-0.5+Random)*6;
M2[i,j]:=Sqr((-0.5+Random)*3);
end;
Writeln('Matrix1:');
for i:=1 to N do
begin
for j:=1 to N do write(M1[i,j]:8:3);
writeln;
end;
Writeln;
Writeln('Matrix2:');
for i:=1 to N do
begin
for j:=1 to N do write(M2[i,j]:8:3);
writeln;
end;
Writeln;
Writeln('Press "Enter" to continue...');
Readln;
Write('Choose the function: 1 - f(x)=x, 2 - f(x)=Sin(x)+Cos(x) ');
Readln(func_num);
Writeln;
Ar_m1:=Arithmetic_mean(M1,func_num);
Ar_m2:=Arithmetic_mean(M2,func_num);
If Ar_m1<Ar_m2 then
begin
Vect_form(M1,Y);
Maximal:=Max_El(M2);
Writeln('Vector (Matrix1):');
for j:=1 to N do write(Y[j]:2);
Writeln;
Writeln('Maximal element (Matrix2):');
Writeln(Maximal:8:3);
end
else
begin
Vect_form(M2,Y);
Maximal:=Max_El(M1);
Writeln('Vector (Matrix2):');
for j:=1 to N do write(Y[j]:2);
Writeln;
Writeln('Maximal element (Matrix1):');
Writeln(Maximal:8:3);
end;
Readln;
End.