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

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

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

Здравствуйте! Есть задание написать функцию со сменным количеством параметром. Этими параметрами есть несколько комплексных чисел. Нужно выполнить их сложение. Структуру я описала:
Листинг программы
  1. struct Complex
  2. {
  3. float a, b;
  4. };
Пыталась сделать функцию, но что то у меня не получается:
Листинг программы
  1. void func(Complex *a, ...)
  2. {
  3. Complex *P = a;
  4. while (P->a != -1 && P->b != -1)
  5. {
  6. cout << P->a << " " << P->b << endl;
  7. P++;
  8. }
  9. }
  10. void main()
  11. {
  12. Complex *END = new Complex;
  13. END->a = -1;
  14. END->b = -1;
  15. Complex *number1 = new Complex, *number2 = new Complex;
  16. number1->a = 1.1;
  17. number1->b = 1.2;
  18. number2->a = 2.1;
  19. number2->b = 2.2;
  20. func(number1, number2, END);
  21. }
Помогите пожалуйста

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdarg.h>
  3.  
  4. typedef struct complex {
  5.     float a;
  6.     float b;
  7. } complex_s;
  8.  
  9. void f(int num_args, ...)
  10. {
  11.     va_list ap;
  12.     va_start(ap, num_args);
  13.     for(int i = 0; i < num_args; i++) {
  14.         complex_s val = va_arg (ap, complex_s);
  15.         printf ("a: %f, b: %f\n", val.a, val.b);
  16.     }
  17.     va_end (ap);
  18. }
  19.  
  20. int main(void)
  21. {
  22.     complex_s a = {.a=12345, .b=6789};
  23.     complex_s b = {.a=5555, .b=66666};
  24.  
  25.     f(2, a, b);
  26.     return 0;
  27. }

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

  1. Подключение необходимых библиотек для работы со переменными аргументами и структурой complex_s.
  2. Создание структуры complex_s, представляющей комплексное число, с полями a и b типа float.
  3. Определение функции f, принимающей переменное количество аргументов и использующей va_list для их обработки.
  4. Инициализация va_list с помощью функции va_start.
  5. Использование цикла for для обработки каждого аргумента в списке.
  6. Получение следующего аргумента с помощью функции va_arg, приведение его к типу complex_s и сохранение в переменной val.
  7. Вывод значений полей a и b комплексного числа с помощью функции printf.
  8. Завершение работы с va_list с помощью функции va_end.
  9. Определение функции main, создающей два объекта complex_s и передающей их в функцию f.
  10. Вызов функции f с двумя аргументами: a и b.
  11. Возврат функцией main значения 0, завершающего выполнение программы.

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


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

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

9   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы