Opgaver i denne lektion   Gå til annoteret slide, hvor denne opgave er tilknyttet -- Tastaturgenvej: 'u'   Alfabetisk indeks   Kursets hjemmeside   

Opgaveløsning:
En funktion som kalder en anden funktion flere gange


Her er min løsning:

#include <stdio.h>

double multi_apply(double (*f) (double), int n, double start_val){
  double res = start_val;
  int i;
  for(i = 1; i <= n; ++i)
    res = f(res);
  return res;
}

double multi_apply_2(double (*f) (double), double (*g) (double), int n, double start_val){
  double res = start_val;
  int i;
  for(i = 1; i <= n; ++i)
    res = f(g(res));
  return res;
}

double half(double x){
  return x/2;
}

double double_up(double x){
  return x * 2;
}

int main(void) {
  double start;
  int n;

  printf("Enter start value and number of applications: ");
  scanf("%lf %d", &start, &n);

  printf("Result of multi_apply: %f\n", multi_apply(half, n, start));

  printf("Result of multi_apply_2: %f\n", multi_apply_2(half, double_up, n, start));
  
  return 0;
}