Найти скалярное произведение векторов - 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
(то есть, результат вычисления скалярного произведения одного и того же вектора). - Программа ожидает ввода пользователя (нажатия клавиши) для завершения работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д