Написать программу! pascalabc.net . вычислить m=(kolichestvo(s)+ kolichestvo(n))^2. где функция kolichestvo(c) вычисляет количество четных элементов под побочной диагональю двумерного массива.

Anya18121978 Anya18121978    2   15.09.2019 01:40    0

Ответы
АннаФилип270406 АннаФилип270406  07.10.2020 15:54
// PascalABC.NET 3.3, сборка 1600 от 23.12.2017
// Внимание! Если программа не работает, обновите версию!

function kolichestvo(c:array [,] of integer):integer;
begin
  Result:=0;
  var n:=c.RowCount;
  for var i:=1 to n-1 do
    for var j:=n-i to n-1 do
    if c[i,j].IsEven then Result+=1
end;

function massiv:array[,] of integer;
begin
  var n:=ReadInteger('Число строк/столбцов: ');
  Result:=MatrRandom(n,n,-99,99)
end;

begin
  var s:=massiv; s.Println(4); Writeln(4*s.ColCount*'-');
  var n:=massiv; n.Println(4); Writeln(4*n.ColCount*'-');
  var m:=Sqr(kolichestvo(s)+kolichestvo(n));
  Writeln('M=',m)
end.

Пример
Число строк/столбцов:  3
 -77 -81  82
 -30 -37  39
  31  92  12

Число строк/столбцов:  6
  66   9 -64 -53  13 -61
  16 -72 -25  38 -19  21
  40  29  38  77 -38  11
  31  76 -83 -17 -58   1
  -2  39 -63  84 -35 -42
 -23 -75 -57  92 -14 -73

M=64
ПОКАЗАТЬ ОТВЕТЫ
kulakovakatyus kulakovakatyus  07.10.2020 15:54
Function kolichestvo(a:array[,] of integer):integer;
begin
var c:=a.ColCount-1;
Result:=a.ElementsWithIndexes.Where(k->k[2]>c-k[1]).
          Select(k->k[0]).Where(x->x mod 2=0).Count;
end;

begin
 var k:=ReadInteger('Количество строк и столбцов в матрицах = ');
 var S:=MatrRandom(k,k,-10,10);
 writeln('S:'); S.Println(6);
 var N:=MatrRandom(k,k,-10,10);
 writeln('N:'); N.Println(6);
 writeln('M = ',sqr(kolichestvo(S)+kolichestvo(N)));
end.

Пример:
Количество строк и столбцов в матрицах =  4
S:
     9     9    -7     5
     4     8    -2     8
     8    10    -9    -2
    10    -6    -3    -2
N:
     9    -7    -4    -1
    -1    -3     1     3
     2    -6    -8     8
     2     2     8     0
M = 81
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика