// PascalABC.NET 3.2, сборка 1439 от 09.05.2017 // Внимание! Если программа не работает, обновите версию!
begin var n:=ReadInteger('Количество строк в матрице:'); var m:=ReadInteger('Количество столбцов в матрице:'); Writeln('*** Исходная матрица [',n,',',m,'] ***'); var a:=MatrRandom(n,m,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); var s:=a.Row(0).Sum+a.Row(n-1).Sum; s+=a.Col(0).Skip(1).Take(n-2).Sum+a.Col(m-1).Skip(1).Take(n-2).Sum; Writeln('Сумма по периметру ',s) end.
Пример Количество строк в матрице: 4 Количество столбцов в матрице: 5 *** Исходная матрица [4,5] *** 87 -67 11 59 46 -13 86 -74 20 -98 -74 24 6 51 74 26 -93 36 40 66
// PascalABC.NET 3.2, сборка 1439 от 09.05.2017 // Внимание! Если программа не работает, обновите версию!
type Point=(real,real);
function ReadPoint(n:integer):Point; begin var a,b:real; Write('Координаты точки ',n,': '); Read(a,b); Result:=(a,b) end;
function GetPoints(n:integer):array of Point; begin Result:=new Point[n]; for var i:=0 to n-1 do Result[i]:=ReadPoint(i+1) end;
function Lsqr(a,b:Point):=sqr(b[0]-a[0])+sqr(b[1]-a[1]);
function Diags(a:array of Point; n:integer):array of real; begin Result:=new real[n*(n-3) div 2]; var k:=0; for var i:=0 to n-3 do for var j:=i+2 to min(n+i-2,n-1) do begin Result[k]:=Lsqr(a[i],a[j]); k+=1 end; end;
begin var n:=ReadInteger('Количество вершин:'); if n>3 then begin var a:=GetPoints(n); Writeln('Длина наибольшей диагонали равна ',sqrt(Diags(a,n).Max):0:5) end else Writeln('Диагонали отсутствуют') end.
Пример Количество вершин: 5 Координаты точки 1: -3 2.5 Координаты точки 2: 3 5.2 Координаты точки 3: 6.1 1 Координаты точки 4: 2 -7.3 Координаты точки 5: -5 -7 Длина наибольшей диагонали равна 14.58904
// Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('Количество строк в матрице:');
var m:=ReadInteger('Количество столбцов в матрице:');
Writeln('*** Исходная матрица [',n,',',m,'] ***');
var a:=MatrRandom(n,m,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
var s:=a.Row(0).Sum+a.Row(n-1).Sum;
s+=a.Col(0).Skip(1).Take(n-2).Sum+a.Col(m-1).Skip(1).Take(n-2).Sum;
Writeln('Сумма по периметру ',s)
end.
Пример
Количество строк в матрице: 4
Количество столбцов в матрице: 5
*** Исходная матрица [4,5] ***
87 -67 11 59 46
-13 86 -74 20 -98
-74 24 6 51 74
26 -93 36 40 66
Сумма по периметру 100
// Внимание! Если программа не работает, обновите версию!
type
Point=(real,real);
function ReadPoint(n:integer):Point;
begin
var a,b:real;
Write('Координаты точки ',n,': '); Read(a,b);
Result:=(a,b)
end;
function GetPoints(n:integer):array of Point;
begin
Result:=new Point[n];
for var i:=0 to n-1 do Result[i]:=ReadPoint(i+1)
end;
function Lsqr(a,b:Point):=sqr(b[0]-a[0])+sqr(b[1]-a[1]);
function Diags(a:array of Point; n:integer):array of real;
begin
Result:=new real[n*(n-3) div 2];
var k:=0;
for var i:=0 to n-3 do
for var j:=i+2 to min(n+i-2,n-1) do begin
Result[k]:=Lsqr(a[i],a[j]);
k+=1
end;
end;
begin
var n:=ReadInteger('Количество вершин:');
if n>3 then begin
var a:=GetPoints(n);
Writeln('Длина наибольшей диагонали равна ',sqrt(Diags(a,n).Max):0:5)
end
else Writeln('Диагонали отсутствуют')
end.
Пример
Количество вершин: 5
Координаты точки 1: -3 2.5
Координаты точки 2: 3 5.2
Координаты точки 3: 6.1 1
Координаты точки 4: 2 -7.3
Координаты точки 5: -5 -7
Длина наибольшей диагонали равна 14.58904