Тогда будет Паскаль...
const
nm = 5;
type
V = array[1..nm] of real;
function SP(var a, b: V; n: integer): real;
var
i: integer;
s: real;
begin
s := 0;
for i := 1 to n do s := s + a[i] * b[i];
SP := s
end;
var
A, B, C, D: V;
P1, P2, min: real;
i, n: integer;
begin
Write('Введите размерность вектора A: '); Readln(n);
Write('Введите координаты вектора A через пробел: ');
for i := 1 to n do Read(A[i]);
Write('Введите координаты вектора B через пробел: ');
for i := 1 to n do Read(B[i]);
P1 := SP(A, B, n);
Write('Введите размерность вектора C: '); Readln(n);
Write('Введите координаты вектора C через пробел: ');
for i := 1 to n do Read(C[i]);
Write('Введите координаты вектора D через пробел: ');
for i := 1 to n do Read(D[i]);
P2 := SP(C, D, n);
if P1 > P2 then min := P2 else min := P1;
Writeln('Меньшее из скалярных произведений (A*B),(C*D) равно ', min);
end.
Результаты выполнения:
Введите размерность вектора A: 4
Введите координаты вектора A через пробел: -5.1 2.7 3.4 6.2
Введите координаты вектора B через пробел: 1.2 3.4 0 2.5
Введите размерность вектора C: 5
Введите координаты вектора C через пробел: 2.7 3.4 2.5 6.3 7.8
Введите координаты вектора D через пробел: 1.7 -1.3 2.8 0 7.2
Меньшее из скалярных произведений (A*B),(C*D) равно 18.56
//PascalABC.NET 3.4.2
begin
var ar := arrrandom(100, -100, 100);
ar.Println.Take(5).Sum.Println;
ar.TakeLast(5).Sum.Println;
end.
6 возможных вариантов, т.к. от А есть три дороги, от Б две и от Г тоже две.
1)
<span>вещ </span>а, б, в
<span>ввод </span>а
<span>ввод </span>б
<span>ввод </span>в
<span>вывод </span>в, нс
<span>вывод </span>б, нс
<span>вывод </span>а, нс
-------------2)
<span>вещ </span>а, б, в
<span>вывод </span>"<em>Введи длины сторон:</em>", нс
<span>ввод </span>а
<span>ввод </span>б
<span>ввод </span>в
<span>вывод </span>"<span><em>Периметр = </em></span>", а+б+в