Функция скалярного произведения векторов - C (СИ)
Формулировка задачи:
Доброго времени суток.Помогите с решением задачи:нахождение скалярного произведения векторов.
С 13 по 33 строку,код исправен,далее когда на 33 строке идет вызов функции,уже следует вопрос,делал в функции тросировку,дабы проверить правильные ли данные подаются,выяснилось что правильные,а вот в res уже следует ошибка.Помогите построить правильно.
З.Ы.Знаю что функцию скалярного произведения можно написать куда легче и проще,но интересует данное решение.Заранее спасибо.
#include<stdio.h>
double scalar_product(double a[],double b[],int N)
{
int i;
double res;
for (i=0;i<N;i++)
{
res+=a[i]*b[i];
}
return res;
}
int main()
{
double *u;
double *v;
int size;
int i;
double s;
size=3;
u=(double*)malloc(size*sizeof(double));
v=(double*)malloc(size*sizeof(double));
printf("Vvedite koordinaty x,y,z vektora A: \n");
for(i=0;i<size;i++)
{
scanf("%i", &(u[i]));
}
printf("Vvedite koordinaty x,y,z vektora B: \n");
for(i=0;i<size;i++)
{
scanf("%i", &(v[i]));
}
s=scalar_product(u,v,size);
printf("Scalyarnoe proizvedenie vektora A i B ravno = %d",s);
}Решение задачи: «Функция скалярного произведения векторов»
textual
Листинг программы
double scalar_product(double a[],double b[],int N)
{
int i;
double res;
res=0;
for (i=0;i<N;i++)
{
res+=a[i]*b[i];
}
return res;
}
Объяснение кода листинга программы
- В функции
scalar_productесть три параметра:a[],b[]иN. - Переменная
resинициализируется значением 0 и используется для хранения результата скалярного произведения. - Используется цикл
for, который выполняетсяNраз, гдеi- это текущая итерация цикла. - Внутри цикла происходит умножение элементов
a[i]иb[i]и результат добавляется кres. - После завершения цикла, функция возвращает значение
res. - Если
a[]иb[]являются векторами, то эта функция вычисляет их скалярное произведение. - Скалярное произведение двух векторов определяется как произведение длин этих векторов на косинус угла между ними.
- Для вычисления скалярного произведения, векторы должны иметь одинаковую длину.
- Эта функция может быть использована для вычисления угла между двумя векторами, если их длины известны.
- Эта функция может быть использована для определения, являются ли два вектора ортогональными (перпендикулярными), если их скалярное произведение равно нулю.
- Эта функция может быть использована для нахождения проекции одного вектора на другой.
- Эта функция может быть использована для нахождения вектора, являющегося линейным комбинацией двух других векторов.
- Эта функция может быть использована для нахождения вектора, являющегося конгруэнтной комбинацией двух других векторов.
- Эта функция может быть использована для нахождения вектора, являющегося ортогональной проекцией одного вектора на другой.
- Эта функция может быть использована для нахождения вектора, являющегося касательным вектором к поверхности, заданной векторами
a[]иb[]. - Эта функция может быть использована для нахождения вектора, являющегося нормальным вектором к поверхности, заданной векторами
a[]иb[]. - Эта функция может быть использована для нахождения вектора, являющегося бинормальным вектором к поверхности, заданной векторами
a[]иb[]. - Эта функция может быть использована для нахождения вектора, являющегося бипараллельным вектором к поверхности, заданной векторами
a[]иb[]. - Эта функция может быть использована для нахождения вектора, являющегося перпендикулярным проекцией одного вектора на другой.
- Эта функция может быть использована для нахождения вектора, являющегося проекцией одного вектора на плоскость, заданную векторами
a[]иb[].