PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018 Внимание! Если программа не работает, обновите версию!
begin var n:=ReadInteger('Количество строк/столбцов в матрице:'); Writeln('*** Исходная матрица ***'); var a:=MatrRandom(n,n,1,50); a.Println(3); Writeln(3*a.ColCount*'-'); // начало расчетов var s:=0; for var i:=0 to n-1 do s+=a[i,n-i-1]; Writeln('1: S=',s); Write('2: Суммы построчно: '); a.Rows.Select(row->row.Sum).PrintLn; Write('3: Произведение элементов: '); a.ElementsByRow.Aggregate(BigInteger(1),(p,q)->p*q).PrintLn; var p:BigInteger:=1; for var i:=0 to n-1 do p*=a[i,i]; Writeln('4: П=',p); end.
2. Длинный "школьный" вариант ("почувствуйте разницу")
// PascalABC.NET 3.1, сборка 1230 от 27.04.2016 var a:array[1..50] of integer; i,s:integer; begin Randomize; s:=0; for i:=1 to 50 do begin a[i]:=Random(31)-10; Write(a[i],' '); if (a[i]>0) and Odd(i) then s:=s+a[i] end; Writeln; Writeln('Sпол.неч = ',s) end.