AB(16) = 171(10)
25(8) = 21(10)
11000000(2) = 192(10)
11000011(2) = 195(10)
11011001(2) = 217(10)
11011111(2) = 223(10)
171+21=192
Отсюда следует, что в данном ряду чисел являющихся больше 192 - три: 11000011, 11011001, 11011111. Всё!
Свойства алгоритма:
1.Дискретность
2.Результативность
3.Массовость
4.Детерминированность
5.Выполнимость и понятность
6.Точность
7.Конечность
Sub z()
Range(Cells(1, 1), Cells(100, 100)).Clear
n1=5
n2=3
n3=4
k = 1
A = InitMatrix(n1, k, 1)
k = k + n1 + 2
B = InitMatrix(n2, k, 1)
k = k + n2 + 2
C = InitMatrix(n3, k, 1)
End Sub
Function InitMatrix(n, cx, cy)
ReDim A(n, n)
For i = LBound(A, 1) To UBound(A, 1)
For j = LBound(A, 2) To UBound(A, 2)
A(i, j) = Rnd * 200 - 100
Cells(cx + i, cy + j) = A(i, j)
Next
Next
Cells(cx, cy + n + 1) = "PositiveAverage ="
Cells(cx, cy + n + 2) = PositiveAverage(A)
InitMatrix = A
End Function
Function PositiveAverage(A)
For i = LBound(A, 1) To UBound(A, 1)
For j = LBound(A, 2) To UBound(A, 2)
If A(i, j) > 0 Then
s = s + A(i, j)
k = k + 1
End If
Next
Next
PositiveAverage = s / k
End Function
Тогда будет Паскаль...
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