20
Объяснение:
Сначала посчитаем количество путей из каждого пункта в таблице (считаем количество ячеек с числом в строке или столбце соответствующих пункту):
П1 - 2
П2 - 3
П3 - 2
П4 - 4
П5 - 2
П6 - 5
П7 - 2
Затем посчитаем количество путей из каждого пункта в графе (считаем количество линий из соответствующего пункта):
А - 2
Б - 2
В - 5
Г - 3
Д - 2
Е - 4
К - 2
Становится очевидно, что:
П6 соответствует пункту В (у них одинаковое количество путей и это количество путей есть в единственном экземпляре)
П4 соответствует пункту Е (у них одинаковое количество путей и это количество путей есть в единственном экземпляре)
П2 соответствует пункту Г (у них одинаковое количество путей и это количество путей есть в единственном экземпляре)
Нам надо определить длина дороги из пункта В в пункт Г, т.е. из пункта П6 в пункт П2, смотрим в таблице значение в ячейке на пересечении строки П6 и столбца П2 (или строки П2 и столбца П6) - это 20
35
Объяснение:
Если смотреть на таблицу, то мы видим, что у пунктов 1, 3, 5 и 7 связь с другими 2 пунктами, у пункта 2 - с тремя, у 4 - с 4, у 6 - с 5. Сравниваем со схемой и получаем:
П1 - К
П2 - Г
П3 -
П4 - Е
П5 -
П6 - В
П7 - Д
Пункты 1 и 7 вычислялись путем соединения точек. пункты 3 и 5 нас не волнуют, это точки А и Б, они в другой стороне и расстояние больше, чем у других.
Расстояние до пункта 2 (Г) 55, больше, чем прямое до 7 (Д), вычеркиваем.
Расстояние до П4 (Е) 20, от П4 (Е) до П7 (Д) 15, всего 35. Прямой путь 45.
Значит кратчайший будет через Е - 35
// PascalABC.NET 3.0, сборка 1128
unit UniSum;
interface
Function UniSumMatrix(a:array[,] of integer):integer;
Function UniSumMatrix(a:array[,] of real):real; overload;
implementation
Function UniSumMatrix(a:array[,] of integer):integer;
begin
Result:=0;
for var i:=0 to Length(a,0)-1 do
for var j:=0 to Length(a,1)-1 do
if a[i,j]>0 then Result+=a[i,j]
end;
Function UniSumMatrix(a:array[,] of real):real; overload;
begin
Result:=0;
for var i:=0 to Length(a,0)-1 do
for var j:=0 to Length(a,1)-1 do
if a[i,j]>0 then Result+=a[i,j]
end;
end.
2. Создаем новый файл и помещаем в него тестовую программу
// PascalABC.NET 3.0, сборка 1128
uses
UniSum;
begin
var m:=ReadInteger('Число строк в матрице:');
var n:=ReadInteger('Число столбцов в матрице:');
var R:=MatrixRandom(m,n,-10,20);
Writeln('Сгенерированная матрица');
for var i:=0 to m-1 do begin
for var j:=0 to n-1 do Write(R[i,j]:4);
Writeln
end;
Writeln('Сумма положительных элементов: ',UniSumMatrix(R));
m:=ReadInteger('Число строк в матрице:');
n:=ReadInteger('Число столбцов в матрице:');
var S:=MatrixRandomReal(m,n,-15,32);
Writeln('Сгенерированная матрица');
for var i:=0 to m-1 do begin
for var j:=0 to n-1 do Write(S[i,j]:7:2);
Writeln
end;
Writeln('Сумма положительных элементов: ',UniSumMatrix(S):0:2)
end.
Тестовое решение:
Число строк в матрице: 4
Число столбцов в матрице: 3
Сгенерированная матрица
-10 15 17
-8 -8 7
2 -9 0
-1 5 17
Сумма положительных элементов: 63
Число строк в матрице: 5
Число столбцов в матрице: 6
Сгенерированная матрица
0.74 -7.30 15.97 5.01 1.55 12.02
-3.98 -9.21 3.35 -7.95 -14.10 31.21
13.75 -5.82 -5.34 13.33 14.61 15.76
-5.30 14.65 2.60 20.26 27.30 10.81
11.60 27.43 5.61 -10.29 -10.48 26.61
Сумма положительных элементов: 274.18
Как видно, программа действительно универсальная: она позволяет работать с матрицами разных размеров и даже разного типа данных.