Функция со сменным количеством параметров для структуры - 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, завершающего выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д