Найти скалярное произведение векторов - Free Pascal (483)
Формулировка задачи:
Даны три одномерных массива A, B и C (три вектора) с одинаковым количеством элементов. Получить S=(b, c) – (a,a), где (x,y) – скалярное произведение векторов x и y:
Решение задачи: «Найти скалярное произведение векторов»
textual
Листинг программы
const n=10;
var
a,b,c:array [1..n] of integer;
s:real;
i:integer;
procedure rndarr(var t:array of integer;s:string);
var
i:integer;
begin
write(s+':[');
for i:=low(t) to high(t) do
begin
t[i]:=random(10);
write(t[i],' ');
end;
writeln(']');
end;
function scal(x,y:array of integer):real;
var
i:integer;
s:real;
begin
s:=0.0;
for i:=low(x) to high(x) do s:=s+x[i]*y[i];
scal:=s;
end;
begin
randomize;
rndarr(a,'A');
rndarr(b,'B');
rndarr(c,'C');
writeln('S=(b,c)-(a,a)=',scal(b,c)-scal(a,a):0:4);
readln;
end.
Объяснение кода листинга программы
- Объявлены константа
n=10и переменныеa, b, cтипаarray [1..n] of integer(массивыa,b,cдля хранения 10 целых чисел). - Также объявлена переменная
sтипаreal(для хранения скаляр), а также переменнаяiтипаinteger(для служебных целей). - Определена процедура
rndarr, которая принимает два аргумента: массивtи строкуs(для вывода информации о массиве). - Внутри процедуры происходит вывод информации о массиве (его элементах) в формате
[a: [1, 2, 3, ..., 10]]. - Каждый элемент массива
tинициализируется случайным числом от 1 до 10 с помощью функцииrandom(10). - Определена функция
scal, которая принимает два аргумента: массивыxиyи возвращает скаляр. - Внутри функции происходит итерация по всем элементам массивов
xиyи суммирование произведений этих элементов в переменнуюs. - Затем функция возвращает значение переменной
s. - В основной части программы вызываются процедуры
rndarrдля инициализации массивовa,bиcслучайными числами. - Выводится результат вычисления скалярного произведения векторов
bиcи вычитания из него скалярного произведения векторовaиa(то есть, результат вычисления скалярного произведения одного и того же вектора). - Программа ожидает ввода пользователя (нажатия клавиши) для завершения работы.