Найти линейную комбинацию трёх векторов - Pascal
Формулировка задачи:
83. Даны три трехмерных вектора a, b и c, заданные своими координатами , вещественное число k. Найти вектор, равный ka + (1-k)b + k2c. Указание: реализовать функции умножения скаляра на вектор , суммы векторов.
Решение задачи: «Найти линейную комбинацию трёх векторов»
textual
Листинг программы
const n=3; //размер векторов
type vec=array[1..n] of real; //их тип
//процедура ввода данных
procedure vvod(var a:vec;c:char); //передаем вектор в программу (var)
var i:byte;
begin
writeln('Введите элементы вектора ',c);
for i:=1 to n do
readln(a[i]);//вводим по 3 элемента в каждый вектор
end;
//процдура вывода вектора нв экран
procedure vyvod(a:vec;c:char);
var i:byte;
begin
writeln('Вектор ',c);
for i:=1 to n do
write(a[i]:6:2);
writeln;
end;
//функция умножения вектора на скаляр
function umn(a:vec;k:real):vec;
var i:byte;
begin
for i:=1 to n do
result[i]:=a[i]*k; //все элементы вектора умножаем на К
end;
//функция суммы двух векторов
function sum(a,b:vec):vec;
var i:byte;
begin
for i:=1 to n do
result[i]:=a[i]+b[i];//элементы векторов с одинаковыми игдексами складываем,
//получаем новый вектор-сумму
end;
var a,b,c,d:vec;
k:real;
begin
vvod(a,'A');
vvod(b,'B');
vvod(c,'C');
vyvod(a,'A');
vyvod(b,'B');
vyvod(c,'C');
write('Введите вещественное число k=');
readln(k);
//получаем сумму k*a + (1-k)*b + k:2*2c.
d:=sum(sum(umn(a,k),umn(b,(1-k))),umn(c,sqr(k)));
vyvod(d,'D');
end.
Объяснение кода листинга программы
- Объявляется константа
nи устанавливается её значение как3, что означает, что размерность векторов равна 3. - Объявляется пользовательский тип
vecкак массив из 1 доnэлементов типаreal- вектор. - Объявляется процедура
vvod, принимающая вектораи символcв качестве параметров. В процедуре вводятся элементы векторааразмерностиnс помощью ввода с клавиатуры. - Объявляется процедура
vyvod, которая выводит векторaразмерностиnна экран. - Объявляется функция
umn, передающая векторaи вещественное числоkв качестве параметров. Она возвращает вектор, умноженный на скалярk. - Объявляется функция
sum, принимающая два вектораaиbв качестве параметров и возвращающая их сумму. - Объявляются переменные
a,b,c,d- векторы, иk- вещественное число. - Вводятся векторы
a,bиcс клавиатуры с помощью вызова процедурыvvod. - Выводятся векторы
a,bиcна экран с помощью процедурыvyvod. - Пользователю предлагается ввести вещественное число
k. - Вычисляется линейная комбинация векторов и выводится результат на экран с помощью процедуры
vyvod.