Требуется выполнить очень простую задачу. На стандартном потоке ввода задаётся количество целых 32х-битных чисел, а затем сами эти числа. Требуется вывести эти числа в том же порядке, с переводом строки в качестве разделителя между ними. Однако, не всё так просто и решить поставленную задачу нужно описанным ниже способом.
Требуется реализовать функцию apply, которая на языке Си имела бы сигнатуру apply(int* array, size_t length, void (*fn) (...), int n, ...); В качестве первого параметра эта функция принимает указатель на массив целых чисел, затем следует количество элементов в этом массиве, затем идёт указатель на функцию, принимающую n+1 (где, n - это четвёртый параметр функции apply) четырёхбайтовых параметров. В качестве неопределённых параметров функция apply ожидает n четырёхбайтовых параметров. Функция apply должна перебрать все числа из массива array и для каждого из них вызвать функцию fn, передав ей в качестве первых n параметров те самые n параметров, которые следуют после параметра n. (n+1)ым параметром функции fn должно стать как раз очередное перебираемое число из массива array.
С помощью функции apply и требуется решить поставленную задачу. Для этого требуется сохранить входной массив в памяти, а затем вызвать функцию apply, передав в качестве третьего параметра функцию стандартной библиотеки fprintf. На языке программирования Си данный вызов выглядел бы приблизительно так: apply(array, length, fprintf, 2, stdout, "%d\n"). Стандартный вывод stdout можно получить либо через вызов (доступной в io.inc) функции FILE* get_stdout(), либо используя printf.
Запрещается использовать макросы ввода-вывода библиотеки io.inc. При вызове всех библиотечных функций стек должен быть выровнен по 16 байт.
Примеры
Входные данные
5 1 2 3 4 5
Результат работы
1
2
3
4
5
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |