Функция iterateN заполняет массив a из n - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Написать функцию, которая использует указатели на функцию. Обычно, к ней нужно также написать функции, которые следует передать ей в каче- стве аргументов. В программе нужно продемонстрировать её использование с несколькими различными функциями в качестве параметров.
void iterateN (int *a, int n, int val, int (*f) (int x));
int succ (int x);
int mply2 (int x);
Функция iterateN заполняет массив a из n. Значение первого элемента бе- рётся из аргумента val, значения последующих элементов получается из зна- чения предыдущего элемента, после вызова для него функции f. Функция succ прибавляет единицу к своему аргументу.
int n = 5, array[n];
iterateN(array, n, 1, succ); // 1 2 3 4 5
Функция mply2 домнажает аргументу на два.
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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы