Язык не указан, решение приводится на языке Pascal. Поскольку в стандарте языка не определена функция арккосинуса, используем для её вычисления следующую формулу:
const m=10; n=6; var a:array[1..m,1..n] of real; i,j,nn,np:integer; t:real; begin Randomize; Writeln('Исходный массив'); for i:=1 to m do begin for j:=1 to n do begin a[i,j]:=100*Random-50; Write(a[i,j]:4:0) end; Writeln end; Writeln('Преобразованный массив'); for i:=1 to m do begin for j:=1 to n do begin t:=i/(i+j); a[i,j]:=a[i,j]*arctan(sqrt(1-sqr(t))/t); Write(a[i,j]:8:3) end; Writeln end; Writeln('Количество положительных и отрицательных по столбцам'); for j:=1 to n do begin nn:=0; np:=0; for i:=1 to m do if a[i,j]>0 then Inc(np) else if a[i,j]<0 then Inc(nn); Writeln(np,nn:5) end end.
Var a:array[1..10] of integer; k,n,i:integer; min:INTEGER; begin randomize; N:=10; k:=0 {кол-во отрицательных элементов}; writeln ('исходный массив'); for i:=1 to N do begin if random(2) =1 then a[i]:=random(100) else begin k:=k+1; a[i]:=-random(100); min:=a[I] end; write(a[i]:5); end; writeln; {поиск минимального положительного} if (k<>0) or (k<>N) then {есть отрицательные или не все отрицательные} begin for i:=1 to N do if (a[i]>0) and (a[i]<min) then min:=a[i]; {замена} for i:=1 to N do if (a[i]<0) then a[i]:=min; end; writeln('Новый массив') for i:=1 to N do write(a[i]:5); end.
Поскольку в стандарте языка не определена функция арккосинуса, используем для её вычисления следующую формулу:
const
m=10;
n=6;
var
a:array[1..m,1..n] of real;
i,j,nn,np:integer;
t:real;
begin
Randomize;
Writeln('Исходный массив');
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=100*Random-50;
Write(a[i,j]:4:0)
end;
Writeln
end;
Writeln('Преобразованный массив');
for i:=1 to m do
begin
for j:=1 to n do
begin
t:=i/(i+j);
a[i,j]:=a[i,j]*arctan(sqrt(1-sqr(t))/t);
Write(a[i,j]:8:3)
end;
Writeln
end;
Writeln('Количество положительных и отрицательных по столбцам');
for j:=1 to n do
begin
nn:=0; np:=0;
for i:=1 to m do
if a[i,j]>0 then Inc(np)
else if a[i,j]<0 then Inc(nn);
Writeln(np,nn:5)
end
end.
Тестовое решение:
Исходный массив
-11 -10 -15 -13 -4 -23
5 -9 -26 42 -10 -50
39 -44 -11 -23 -49 29
10 28 -19 -3 11 -33
-43 38 9 -17 -39 -10
28 -14 37 31 28 -45
-36 -9 43 1 5 -27
9 13 11 27 -26 -47
-12 -47 18 -2 1 -42
-6 42 30 -32 -20 8
Преобразованный массив
-12.034 -12.248 -19.972 -17.532 -5.364 -32.661
4.253 -9.774 -29.745 51.166 -13.367 -65.437
28.372 -40.514 -11.382 -26.380 -58.461 36.054
6.581 23.311 -18.115 -3.547 11.668 -37.943
-25.184 29.245 7.803 -16.734 -41.213 -10.573
14.960 -9.929 31.504 28.946 27.517 -46.913
-18.219 -5.980 33.942 1.053 4.692 -27.179
4.153 8.483 8.413 22.468 -23.865 -45.133
-5.524 -28.630 12.763 -1.270 0.634 -38.674
-2.612 24.538 20.476 -25.133 -16.656 7.570
Количество положительных и отрицательных по столбцам
5 5
4 6
6 4
4 6
4 6
2 8
k,n,i:integer;
min:INTEGER;
begin
randomize; N:=10; k:=0 {кол-во отрицательных элементов};
writeln ('исходный массив');
for i:=1 to N do
begin
if random(2) =1 then a[i]:=random(100)
else begin k:=k+1; a[i]:=-random(100); min:=a[I] end;
write(a[i]:5);
end;
writeln;
{поиск минимального положительного}
if (k<>0) or (k<>N) then {есть отрицательные или не все отрицательные}
begin
for i:=1 to N do
if (a[i]>0) and (a[i]<min) then min:=a[i];
{замена}
for i:=1 to N do
if (a[i]<0) then a[i]:=min;
end;
writeln('Новый массив')
for i:=1 to N do write(a[i]:5);
end.