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.
Язык не указан, решение приводится на языке 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.
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.