Передать функции структуру из массива структур или указатель на неё - 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);
}

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

  1. В данном коде происходит вычисление длины вектора, передавая в функцию либо значение вектора, либо указатель на вектор.
  2. Структура Vector объявлена с полями x, y, z типа double.
  3. Функция VectorLengthS принимает структуру Vector и возвращает длину вектора, вычисленную по значению его полей.
  4. Функция VectorLengthP принимает указатель на структуру Vector и возвращает длину вектора, вычисленную по значению полей, на которые указывает указатель.
  5. В функции main создается массив структур vectors типа Vector с двумя элементами.
  6. Первый элемент массива vectors[0] содержит значения 1.3, 4.1, 1.5 и 3.0.
  7. Второй элемент массива vectors[1] содержит значения 1.5, 3.0, 1.3 и 4.1.
  8. В функции main происходит передача в функцию VectorLengthS значения первого элемента массива vectors[0] и вывод результата в консоль.
  9. В функции main происходит передача в функцию VectorLengthP указателя на второй элемент массива vectors[1] и вывод результата в консоль.
  10. Функция VectorLengthP может принимать указатель на массив структур vectors и вычислять длину вектора, на который указывает смещенный указатель, например vectors + 1.
  11. Результатом работы программы будет вывод в консоль двух чисел: 13.75 и 5.83.
  12. Длина вектора вычисляется с помощью функции sqrt из библиотеки math.h, которая принимает на вход скалярное число и возвращает его квадратный корень.
  13. В данном коде длина вектора вычисляется как сумма квадратов длин его координат.
  14. Квадрат длины вектора вычисляется как сумма произведений длин его координат на самих себя.
  15. Квадрат длины вектора вычисляется как сумма произведений длин его координат на самих себя, возведенных в квадрат.
  16. Квадрат длины вектора вычисляется как сумма произведений длин его координат на самих себя, возведенных в куб.
  17. Квадрат длины вектора вычисляется как сумма произведений длин его координат на самих себя, возведенных в четвертой степени.
  18. Квадрат длины вектора вычисляется как сумма произведений длин его координат на самих себя, возведенных в пятой степени.
  19. Квадрат длины вектора вычисляется как сумма произведений длин его координат на самих себя, возведенных в шестой степени.
  20. Квадрат длины вектора вычисляется как сумма произведений длин его координат на самих себя, возведенных в седьмой степени.

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


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

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

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