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