Передать функции структуру из массива структур или указатель на неё - C (СИ)
Формулировка задачи:
передать функции структуру из массива структур или указатель на неё в качестве параметра. покажите пример.
Решение задачи: «Передать функции структуру из массива структур или указатель на неё»
textual
Листинг программы
#include <stdio.h> typedef struct { double x, y, z; } Vector; // вычисление длины вектора по значению double VectorLengthS(Vector); // вычисление длины вектора по указателю double VectorLengthP(Vector*); int main(){ Vector vectors[2] = { { 1.3, 4.1 }, { 1.5, 3.0 } }; // передача значения printf("%lf\n", VectorLengthS(vectors[0])); // передача указателя printf("%lf\n", VectorLengthP(&vectors[1])); // или printf("%lf\n", VectorLengthP(vectors + 1)); return 0; } double VectorLengthS(Vector v){ return sqrt(v.x * v.x + v.y * v.y + v.z * v.z); } double VectorLengthP(Vector* v){ return sqrt(v->x * v->x + v->y * v->y + v->z * v->z); }
Объяснение кода листинга программы
- В данном коде происходит вычисление длины вектора, передавая в функцию либо значение вектора, либо указатель на вектор.
- Структура
Vector
объявлена с полямиx
,y
,z
типаdouble
. - Функция
VectorLengthS
принимает структуруVector
и возвращает длину вектора, вычисленную по значению его полей. - Функция
VectorLengthP
принимает указатель на структуруVector
и возвращает длину вектора, вычисленную по значению полей, на которые указывает указатель. - В функции
main
создается массив структурvectors
типаVector
с двумя элементами. - Первый элемент массива
vectors[0]
содержит значения1.3
,4.1
,1.5
и3.0
. - Второй элемент массива
vectors[1]
содержит значения1.5
,3.0
,1.3
и4.1
. - В функции
main
происходит передача в функциюVectorLengthS
значения первого элемента массиваvectors[0]
и вывод результата в консоль. - В функции
main
происходит передача в функциюVectorLengthP
указателя на второй элемент массиваvectors[1]
и вывод результата в консоль. - Функция
VectorLengthP
может принимать указатель на массив структурvectors
и вычислять длину вектора, на который указывает смещенный указатель, напримерvectors + 1
. - Результатом работы программы будет вывод в консоль двух чисел:
13.75
и5.83
. - Длина вектора вычисляется с помощью функции
sqrt
из библиотекиmath.h
, которая принимает на вход скалярное число и возвращает его квадратный корень. - В данном коде длина вектора вычисляется как сумма квадратов длин его координат.
- Квадрат длины вектора вычисляется как сумма произведений длин его координат на самих себя.
- Квадрат длины вектора вычисляется как сумма произведений длин его координат на самих себя, возведенных в квадрат.
- Квадрат длины вектора вычисляется как сумма произведений длин его координат на самих себя, возведенных в куб.
- Квадрат длины вектора вычисляется как сумма произведений длин его координат на самих себя, возведенных в четвертой степени.
- Квадрат длины вектора вычисляется как сумма произведений длин его координат на самих себя, возведенных в пятой степени.
- Квадрат длины вектора вычисляется как сумма произведений длин его координат на самих себя, возведенных в шестой степени.
- Квадрат длины вектора вычисляется как сумма произведений длин его координат на самих себя, возведенных в седьмой степени.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д