Задание 1)
// PascalABC.NET 3.2, сборка 1362 от 14.12.2016
// Внимание! В других версиях языка работа не гарантируется!
begin
var m:=ReadInteger('Количество строк в массиве:');
var n:=ReadInteger('Количество столбцов в массиве:');
var a:=MatrRandomReal(m,n,-50,50);
Writeln('*** Исходный массив A[',m,',',n,'] ***');
a.Println(7,2); Writeln(7*a.ColCount*'-');
var ca:=a.Rows.SelectMany(x->x).Sum/m/n;
Writeln('СА=',ca);
if ca<0 then begin<br> var im,jm:integer;
(im,jm):=(-1,-1);
for var i:=0 to m-1 do
for var j:=0 to n-1 do
if (a[i,j]<0) then begin<br> if im=-1 then (im,jm):=(i,j)
else if a[i,j]>a[im,jm] then (im,jm):=(i,j) end;
a[im,jm]:=ca
end
else
for var i:=0 to m-1 do
for var j:=0 to n-1 do
if a[i,j]>0 then a[i,j]:=ca;
Writeln('*** Результирующий массив A[',m,',',n,'] ***');
a.Println(7,2)
end.
Примеры
Количество строк в массиве: 5
Количество столбцов в массиве: 6
*** Исходный массив A[5,6] ***
28.98 -24.01 -48.61 34.13 5.29 -16.63
15.50 10.61 24.22 21.38 -31.50 20.72
-10.44 -3.96 -36.47 -7.78 -11.06 3.63
-38.58 47.71 -36.86 13.46 14.95 27.17
-15.89 -19.08 -17.70 24.73 -21.29 13.00
------------------------------------------
СА=-1.14531650882151
*** Результирующий массив A[5,6] ***
28.98 -24.01 -48.61 34.13 5.29 -16.63
15.50 10.61 24.22 21.38 -31.50 20.72
-10.44 -1.15 -36.47 -7.78 -11.06 3.63
-38.58 47.71 -36.86 13.46 14.95 27.17
-15.89 -19.08 -17.70 24.73 -21.29 13.00
Количество строк в массиве: 4
Количество столбцов в массиве: 7
*** Исходный массив A[4,7] ***
43.37 1.94 35.69 41.42 -35.34 -30.78 19.75
-11.69 8.24 -46.34 12.28 41.78 14.78 10.01
-23.17 12.89 -8.27 19.17 0.50 39.31 -7.97
-32.21 32.20 -13.57 -49.98 43.38 -17.40 43.15
-------------------------------------------------
СА=5.11226028308976
*** Результирующий массив A[4,7] ***
5.11 5.11 5.11 5.11 -35.34 -30.78 5.11
-11.69 5.11 -46.34 5.11 5.11 5.11 5.11
-23.17 5.11 -8.27 5.11 5.11 5.11 -7.97
-32.21 5.11 -13.57 -49.98 5.11 -17.40 5.11
Задание 2)
// PascalABC.NET 3.2, сборка 1362 от 14.12.2016
// Внимание! В других версиях языка работа не гарантируется!
begin
var n:=ReadInteger('N=');
Writeln('Вводите элементы массива построчно');
var a:=MatrFill(n,n,0);
for var i:=0 to n-1 do
for var j:=0 to n-1 do Read(a[i,j]);
var k:=0;
foreach var v in a.Rows do
if v.All(x->x=0) then k+=1;
if k>0 then Writeln('Количество нулевых строк равно ',k)
else begin
foreach var v in a.Cols do
if v.All(x->x=1) then k+=1;
if k>0 then Writeln('Количество единичных столбцов равно ',k)
end;
Writeln('Работа завершена')
end.
Пример
N= 4
Вводите элементы массива построчно
0 1 0 0
1 1 0 1
0 1 1 0
1 1 1 1
Количество единичных столбцов равно 1
Работа завершена
Задание 3)
// PascalABC.NET 3.2, сборка 1362 от 14.12.2016
// Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('N=');
var a:=MatrRandom(n,n,0,9); a.Println(2);
var b:=ArrFill(10,0);
foreach var x in a.Rows.SelectMany(x->x) do b[x]+=1;
b.Select((x,i)->(i,x)).Println
end.
Пример
N= 20
9 5 1 6 8 0 9 4 6 4 7 0 4 4 7 9 3 0 1 1
6 4 1 0 6 8 8 9 8 2 0 0 4 0 3 1 8 8 5 7
6 1 5 8 6 6 0 5 4 3 6 4 9 9 5 5 4 0 0 0
2 9 6 3 4 6 6 4 0 5 0 4 5 4 4 5 9 3 3 9
8 2 5 4 5 5 1 4 5 8 7 8 7 5 4 7 5 1 3 9
0 6 4 8 2 1 9 4 4 9 6 1 6 1 2 9 3 1 7 9
5 1 8 2 8 2 7 0 9 7 9 7 9 4 8 1 8 7 2 4
6 6 9 5 2 5 1 6 2 5 3 3 3 4 3 9 7 1 0 9
4 8 5 7 9 8 2 2 2 0 0 6 9 3 2 9 1 3 0 2
1 0 7 3 4 6 4 5 0 9 4 6 7 2 9 7 0 2 5 3
3 9 3 2 4 6 4 9 1 3 7 3 1 7 8 4 0 1 2 3
4 6 1 3 5 4 9 7 4 5 9 9 8 6 9 2 6 5 9 7
2 4 3 6 2 1 5 9 4 5 6 8 9 1 9 6 7 0 7 0
6 6 5 6 4 7 5 4 7 5 7 5 2 5 1 0 2 5 0 4
8 9 3 8 8 0 0 6 7 2 5 6 7 8 1 5 8 7 1 5
5 1 2 8 8 1 5 4 0 9 4 2 0 2 1 6 3 6 7 4
7 8 6 5 0 1 7 4 3 5 1 5 3 5 8 7 7 5 0 7
4 5 6 8 8 2 5 5 7 4 1 2 9 7 7 7 4 6 7 6
3 1 0 4 7 8 8 4 4 3 8 8 5 0 9 1 2 7 6 7
5 2 7 9 4 8 5 5 7 1 3 0 7 3 4 3 5 1 0 9
(0,37) (1,37) (2,32) (3,32) (4,50) (5,51) (6,39) (7,45) (8,36) (9,41)