// PascalABC.NET 3.3, сборка 1611 от 06.01.2018 // Внимание! Если программа не работает, обновите версию!
begin var (m,n):=ReadInteger2('Количество строк и столбцов в матрице:'); Writeln('*** Исходная матрица ***'); var a:=MatrRandom(m,n,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); var d:=a.ElementsWithIndexes.Where(t->t[1]=t[2]).ToArray; Writeln('Сумма элементов на главной диагонали: ',d.Sum(t->t[0])); var q:=d.Min; Writeln('Минимальный элемент [',q[1]+1,',',q[2]+1,']=',q[0]); end.
// PascalABC.NET 3.3, сборка 1599 от 17.12.2017 // Внимание! Если программа не работает, обновите версию!
procedure Astento; begin var T:=Arr(-2,3,-1,4,-5,2,1,0,1,2,1,-3,5); var s:=T.OrderBy(p->Abs(p)); // последовательность памяти не занимает Writeln('Сумма двух наименьших по модулю: ',s.Take(2).Sum); Writeln('Сумма двух наибольших по модулю: ',s.TakeLast(2).Sum) end;
begin Astento end.
Результат Сумма двух наименьших по модулю: -1 Сумма двух наибольших по модулю: 0
Замечание: в данном случае "ранжированная" последовательность была такой: 0 -1 1 1 1 -2 2 2 3 -3 4 -5 5
// Внимание! Если программа не работает, обновите версию!
begin
var (m,n):=ReadInteger2('Количество строк и столбцов в матрице:');
Writeln('*** Исходная матрица ***');
var a:=MatrRandom(m,n,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
var d:=a.ElementsWithIndexes.Where(t->t[1]=t[2]).ToArray;
Writeln('Сумма элементов на главной диагонали: ',d.Sum(t->t[0]));
var q:=d.Min;
Writeln('Минимальный элемент [',q[1]+1,',',q[2]+1,']=',q[0]);
end.
Пример
Количество строк и столбцов в матрице: 5 6
*** Исходная матрица ***
-5 -34 -95 -24 -22 -24
16 -43 -57 -55 44 -34
-89 26 -25 26 63 75
-53 53 23 -43 -65 -29
12 -74 -39 71 84 12
Сумма элементов на главной диагонали: -32
Минимальный элемент [2,2]=-43
// Внимание! Если программа не работает, обновите версию!
procedure Astento;
begin
var T:=Arr(-2,3,-1,4,-5,2,1,0,1,2,1,-3,5);
var s:=T.OrderBy(p->Abs(p)); // последовательность памяти не занимает
Writeln('Сумма двух наименьших по модулю: ',s.Take(2).Sum);
Writeln('Сумма двух наибольших по модулю: ',s.TakeLast(2).Sum)
end;
begin
Astento
end.
Результат
Сумма двух наименьших по модулю: -1
Сумма двух наибольших по модулю: 0
Замечание: в данном случае "ранжированная" последовательность была такой: 0 -1 1 1 1 -2 2 2 3 -3 4 -5 5