Функция скалярного произведения векторов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток.Помогите с решением задачи:нахождение скалярного произведения векторов.
#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);
}
С 13 по 33 строку,код исправен,далее когда на 33 строке идет вызов функции,уже следует вопрос,делал в функции тросировку,дабы проверить правильные ли данные подаются,выяснилось что правильные,а вот в res уже следует ошибка.Помогите построить правильно. З.Ы.Знаю что функцию скалярного произведения можно написать куда легче и проще,но интересует данное решение.Заранее спасибо.

Решение задачи: «Функция скалярного произведения векторов»

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;
}

Объяснение кода листинга программы

  1. В функции scalar_product есть три параметра: a[], b[] и N.
  2. Переменная res инициализируется значением 0 и используется для хранения результата скалярного произведения.
  3. Используется цикл for, который выполняется N раз, где i - это текущая итерация цикла.
  4. Внутри цикла происходит умножение элементов a[i] и b[i] и результат добавляется к res.
  5. После завершения цикла, функция возвращает значение res.
  6. Если a[] и b[] являются векторами, то эта функция вычисляет их скалярное произведение.
  7. Скалярное произведение двух векторов определяется как произведение длин этих векторов на косинус угла между ними.
  8. Для вычисления скалярного произведения, векторы должны иметь одинаковую длину.
  9. Эта функция может быть использована для вычисления угла между двумя векторами, если их длины известны.
  10. Эта функция может быть использована для определения, являются ли два вектора ортогональными (перпендикулярными), если их скалярное произведение равно нулю.
  11. Эта функция может быть использована для нахождения проекции одного вектора на другой.
  12. Эта функция может быть использована для нахождения вектора, являющегося линейным комбинацией двух других векторов.
  13. Эта функция может быть использована для нахождения вектора, являющегося конгруэнтной комбинацией двух других векторов.
  14. Эта функция может быть использована для нахождения вектора, являющегося ортогональной проекцией одного вектора на другой.
  15. Эта функция может быть использована для нахождения вектора, являющегося касательным вектором к поверхности, заданной векторами a[] и b[].
  16. Эта функция может быть использована для нахождения вектора, являющегося нормальным вектором к поверхности, заданной векторами a[] и b[].
  17. Эта функция может быть использована для нахождения вектора, являющегося бинормальным вектором к поверхности, заданной векторами a[] и b[].
  18. Эта функция может быть использована для нахождения вектора, являющегося бипараллельным вектором к поверхности, заданной векторами a[] и b[].
  19. Эта функция может быть использована для нахождения вектора, являющегося перпендикулярным проекцией одного вектора на другой.
  20. Эта функция может быть использована для нахождения вектора, являющегося проекцией одного вектора на плоскость, заданную векторами a[] и b[].

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы