Вычислить скалярное произведение 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; }
Объяснение кода листинга программы
- Включение необходимых библиотек
- Объявление структуры VECTOR для хранения координат вектора
- Функция setVector для ввода значений координат вектора
- Функция copyVector для копирования вектора
- Функция add для сложения двух векторов
- Функция numProduct для умножения вектора на число
- Функция dotProduct для вычисления скалярного произведения векторов
- Создание четырех векторов p,q,r,sum
- Ввод значения переменной A с помощью функции scanf
- Копирование значений вектора p в вектор sum
- Добавление значений вектора q к вектору sum
- Добавление значений вектора r к вектору sum
- Умножение вектора sum на значение A с помощью функции numProduct
- Вычисление скалярного произведения S = (A(p+r+q),p) с помощью функции dotProduct
- Вывод значения S на экран
- Очистка буфера с помощью функции flushall
- Ждем нажатия любой клавиши с помощью функции getchar
- Возврат 0 из функции main, что означает успешное выполнение программы
- Значения переменных p,q,r,sum не выводятся на экран, так как они используются только для вычислений
- Значение переменной A вводится с клавиатуры, поэтому оно не выводится на экран
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д