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

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

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

Здравствуйте! Есть задание написать функцию со сменным количеством параметром. Этими параметрами есть несколько комплексных чисел. Нужно выполнить их сложение. Структуру я описала:
struct Complex
{
    float a, b;
};
Пыталась сделать функцию, но что то у меня не получается:
void func(Complex *a, ...)
{
    Complex *P = a;
    while (P->a != -1 && P->b != -1)
    {
        cout << P->a << " " << P->b << endl;
        P++;
    }
}
void main()
{
    Complex *END = new Complex;
    END->a = -1;
    END->b = -1;
    Complex *number1 = new Complex, *number2 = new Complex;
    number1->a = 1.1;
    number1->b = 1.2;
    number2->a = 2.1;
    number2->b = 2.2;
    func(number1, number2, END);
}
Помогите пожалуйста

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

textual
Листинг программы
#include <stdio.h>
#include <stdarg.h>
 
typedef struct complex {
    float a;
    float b;
} complex_s;
 
void f(int num_args, ...)
{
    va_list ap;
    va_start(ap, num_args);
    for(int i = 0; i < num_args; i++) {
        complex_s val = va_arg (ap, complex_s);
        printf ("a: %f, b: %f\n", val.a, val.b);
    }
    va_end (ap);
}
 
int main(void)
{
    complex_s a = {.a=12345, .b=6789};
    complex_s b = {.a=5555, .b=66666};
 
    f(2, a, b);
    return 0;
}

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

  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
Похожие ответы