Функция со сменным количеством параметров для структуры - 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;
- }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы со переменными аргументами и структурой complex_s.
- Создание структуры complex_s, представляющей комплексное число, с полями a и b типа float.
- Определение функции f, принимающей переменное количество аргументов и использующей va_list для их обработки.
- Инициализация va_list с помощью функции va_start.
- Использование цикла for для обработки каждого аргумента в списке.
- Получение следующего аргумента с помощью функции va_arg, приведение его к типу complex_s и сохранение в переменной val.
- Вывод значений полей a и b комплексного числа с помощью функции printf.
- Завершение работы с va_list с помощью функции va_end.
- Определение функции main, создающей два объекта complex_s и передающей их в функцию f.
- Вызов функции f с двумя аргументами: a и b.
- Возврат функцией main значения 0, завершающего выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д