Определение массива после работы функции - упростить код - C (СИ)

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

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

Надо переписать вот эту сроку проще. И без ++.
 for( ; ++c != b; ) *c = (*f)(*(c - 1));
#include <stdio.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 )
{
  
  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;
}

Решение задачи: «Определение массива после работы функции - упростить код»

textual
Листинг программы
void iterateN (int a[], int n, int val, int (*f) (int x))
{
    a[0] = val;
    int i;
    for(i = 1; i < n; i++)
        a[i] = f(a[i - 1]);
}

Объяснение кода листинга программы

В данном коде реализована функция iterateN, которая принимает на вход массив a, его размер n, начальное значение val и функцию f, которая будет применяться к каждому элементу массива.

  1. a[0] = val; - в начале функции значение val присваивается первому элементу массива a.
  2. int i; - в функции объявляется переменная i, которая будет использоваться в цикле.
  3. for(i = 1; i < n; i++) - начинается цикл, который будет проходить по всем элементам массива от 1 до n-1.
  4. a[i] = f(a[i - 1]); - в каждой итерации цикла значение функции f присваивается текущему элементу массива a. При этом, перед вызовом функции, к индексу элемента a[i-1] добавляется единица, так как индексы массива начинаются с 0. Таким образом, после выполнения функции iterateN, массив a будет содержать последовательность значений, полученных в результате применения функции f к предыдущему элементу массива.

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


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

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

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