Вычислить скалярное произведение S - C (СИ)

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

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

Вычислить скалярное произведение S s=(A(p+r+q),p)

Решение задачи: «Вычислить скалярное произведение S»

textual
Листинг программы
//Вычислить скалярное произведение s=(A(p+r+q),p)
 
#include <stdio.h>
#include <stdlib.h>
 
//structure VECTOR, elements: -------------------------------------------------
//------------------name - one-character name
//------------------x,y,z - coordinates
struct VECTOR
{   char name;
    double x,y,z;
};
 
//set vector with the given name ----------------------------------------------
void setVector(char name, VECTOR *v)
{   v->name = name;
    printf("\nVector %c:\n", name);
    printf("\tx = ");
    scanf("%lf", &v->x);
    printf("\ty = ");
    scanf("%lf", &v->y);
    printf("\tz = ");
    scanf("%lf", &v->z);
}
 
//copy vector -----------------------------------------------------------------
void copyVector(char destName, VECTOR *dest, VECTOR *source)
{   dest->name = destName;
    dest->x = source->x;
    dest->y = source->y;
    dest->z = source->z;
}
 
//add vector b to a -------------------------------------------------------------
void add (VECTOR *a, VECTOR *b)
{   a->x = a->x + b->x;
    a->y = a->y + b->y;
    a->z = a->z + b->z;
}
 
//product number*vector ---------------------------------------------------------
void numProduct(VECTOR *a, double num)
{   a->x = num  *a->x;
    a->y = num  *a->y;
    a->y = num  *a->y;
}
 
//dot product vector*vector ---------------------------------------------
double dotProduct (VECTOR *a, VECTOR *b)
{   return a->x * b->x + a->y * b->y + a->z * b->z;
}
 
//------------------------------------------------------------------------------
int main()
{   VECTOR p,q,r,sum;
    double A;
 
    setVector('p', &p);
    setVector('q', &q);
    setVector('r', &r);
    printf("A = ");
    scanf("%lf", &A);
 
    copyVector('sum', &sum, &p);                //sum = p
    add(&sum,&q);                               //sum = p+q
    add(&sum,&r);                               //sum = p+q+r
    numProduct(&sum,A);                         //sum = (p+q+r)*A
 
    printf("Dot Product S = (A(p+r+q),p) = %lf", dotProduct(&sum,&p));
 
    flushall();
    getchar();
    return 0;
}

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

  1. Включение необходимых библиотек
  2. Объявление структуры VECTOR для хранения координат вектора
  3. Функция setVector для ввода значений координат вектора
  4. Функция copyVector для копирования вектора
  5. Функция add для сложения двух векторов
  6. Функция numProduct для умножения вектора на число
  7. Функция dotProduct для вычисления скалярного произведения векторов
  8. Создание четырех векторов p,q,r,sum
  9. Ввод значения переменной A с помощью функции scanf
  10. Копирование значений вектора p в вектор sum
  11. Добавление значений вектора q к вектору sum
  12. Добавление значений вектора r к вектору sum
  13. Умножение вектора sum на значение A с помощью функции numProduct
  14. Вычисление скалярного произведения S = (A(p+r+q),p) с помощью функции dotProduct
  15. Вывод значения S на экран
  16. Очистка буфера с помощью функции flushall
  17. Ждем нажатия любой клавиши с помощью функции getchar
  18. Возврат 0 из функции main, что означает успешное выполнение программы
  19. Значения переменных p,q,r,sum не выводятся на экран, так как они используются только для вычислений
  20. Значение переменной A вводится с клавиатуры, поэтому оно не выводится на экран

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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