Функция iterateN заполняет массив a из n - C (СИ)
Формулировка задачи:
Написать функцию, которая использует указатели на функцию. Обычно, к
ней нужно также написать функции, которые следует передать ей в каче-
стве аргументов. В программе нужно продемонстрировать её использование
с несколькими различными функциями в качестве параметров.
Функция iterateN заполняет массив a из n. Значение первого элемента бе-
рётся из аргумента val, значения последующих элементов получается из зна-
чения предыдущего элемента, после вызова для него функции f.
Функция succ прибавляет единицу к своему аргументу.
Функция mply2 домнажает аргументу на два.
void iterateN (int *a, int n, int val, int (*f) (int x)); int succ (int x); int mply2 (int x);
int n = 5, array[n]; iterateN(array, n, 1, succ); // 1 2 3 4 5
int n = 5, array[n]; iterateN(array, n, 1, succ); // 1 2 4 8 16
Решение задачи: «Функция iterateN заполняет массив a из n»
textual
Листинг программы
#include <stdio.h> #include <locale.h> #define N 5 /*------------------------*/ int succ (int x) { return ++x; } /*------------------------*/ int mply2 (int x) { return x*=2; } /*------------------------*/ void iterateN (int *a, int n, int val, int (*f) (int x)) { int *b = a + n; int *c = a; *c = val; for( ; ++c != b; ) *c = (*f)(*(c - 1)); } /*------------------------*/ int main ( void ) { setlocale(LC_ALL,"RU"); int d[N]; iterateN(d, N, 2, succ); int i; printf("Значения массива после вызова функ. iterateN с одним из аргументов succ:\n"); for(i = 0; i < N; i++)printf("%d ", d[i]); iterateN(d, N, 2, mply2); printf("\nЗначения массива после вызова функ. iterateN с одним из аргументов mply2:\n"); for(i = 0; i < N; i++)printf("%d ", d[i]); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д