{ Free Pascal - fpc 2.6.4 } var i,n:integer; A,B:array of integer; p:longint; begin Write('Число элементов в векторах='); Read(n); Randomize; SetLength(A,n); Writeln('Вектор A'); for i:=0 to n-1 do begin A[i]:=Random(51)-25; Write(A[i],' ') end; Writeln; SetLength(B,n); p:=0; Writeln('Вектор B'); for i:=0 to n-1 do begin B[i]:=Random(51)-25; Write(B[i],' '); p:=p+A[i]*B[i] end; Writeln; Writeln('Скалярное произведение равно ',p); end.
Тестовое решение: Число элементов в векторах=15 Вектор A -16 -6 -1 6 -6 7 22 4 16 19 3 -21 19 22 7 Вектор B 21 21 -2 -8 -3 25 -4 20 6 -11 8 10 -16 -16 19 Скалярное произведение равно -1145
Делим число в десятичной системе на основание числа, которое мы хотим получить, то есть на 2:
200 / 2 = 100 (0), где 0 - это остаток. Действительно, 2 · 100 + 0 = 200
100 / 2 = 50 (0)
50 / 2 = 25 (0)
25 / 2 = 12 (1), 2 · 12 + 1 = 24 + 1 = 25. Это можно представить так: у Вас есть 25 яблок и 2 друга, между которыми нужно поровну разделить все яблоки. Вы можете обоим дать только по 12 яблок, а останется 1. Это и будет остаток.
12 / 2 = 6 (0)
6 / 2 = 3 (0)
3 / 2 = 1 (1)
1 / 2 = 1 (1), применим на том же примере с яблоками: у нас есть одно яблоко и 2 друга, а нужно разделить количество яблок поровну, не деля яблоко пополам. У Вас сделать это не получится, поэтому у Вас остаётся 1 яблоко, то есть остаток.
var
i,n:integer;
A,B:array of integer;
p:longint;
begin
Write('Число элементов в векторах='); Read(n);
Randomize;
SetLength(A,n);
Writeln('Вектор A');
for i:=0 to n-1 do begin A[i]:=Random(51)-25; Write(A[i],' ') end;
Writeln;
SetLength(B,n);
p:=0;
Writeln('Вектор B');
for i:=0 to n-1 do begin
B[i]:=Random(51)-25;
Write(B[i],' ');
p:=p+A[i]*B[i]
end;
Writeln;
Writeln('Скалярное произведение равно ',p);
end.
Тестовое решение:
Число элементов в векторах=15
Вектор A
-16 -6 -1 6 -6 7 22 4 16 19 3 -21 19 22 7
Вектор B
21 21 -2 -8 -3 25 -4 20 6 -11 8 10 -16 -16 19
Скалярное произведение равно -1145
Делим число в десятичной системе на основание числа, которое мы хотим получить, то есть на 2:
200 / 2 = 100 (0), где 0 - это остаток. Действительно, 2 · 100 + 0 = 200
100 / 2 = 50 (0)
50 / 2 = 25 (0)
25 / 2 = 12 (1), 2 · 12 + 1 = 24 + 1 = 25. Это можно представить так: у Вас есть 25 яблок и 2 друга, между которыми нужно поровну разделить все яблоки. Вы можете обоим дать только по 12 яблок, а останется 1. Это и будет остаток.
12 / 2 = 6 (0)
6 / 2 = 3 (0)
3 / 2 = 1 (1)
1 / 2 = 1 (1), применим на том же примере с яблоками: у нас есть одно яблоко и 2 друга, а нужно разделить количество яблок поровну, не деля яблоко пополам. У Вас сделать это не получится, поэтому у Вас остаётся 1 яблоко, то есть остаток.
Теперь "собираем" остатки снизу вверх:
11001000₂ - это и будет наш двоичный код.
ответ11001000