fork download
  1. #include <stdio.h>
  2.  
  3. int grapes(int n) { return n > 1 ? 0.8 * n : n; }
  4. int apples(int n) { return (n / 2 | 0) + n % 2; }
  5. int normal(int n) { return n; }
  6.  
  7. int prices[] = {10,20,30};
  8. int (*f[])(int) = {grapes, apples, normal};
  9.  
  10. int total(int counts[]){
  11. int sum=0;
  12. for (int i=0;i<2;++i) sum+=(*f[i])(counts[i])*prices[i];
  13. return sum;
  14. }
  15.  
  16. int main() {
  17.  
  18. #define OUT(a,b,c) printf("%d\n",total( ((int[]){a,b,c} )));
  19. OUT(1,0,1);
  20. OUT(2,0,1);
  21. OUT(3,0,1);
  22. OUT(4,0,1);
  23. OUT(4,1,1);
  24. OUT(4,2,1);
  25. OUT(4,3,1);
  26. #undef OUT
  27.  
  28. return 0;
  29. }
  30.  
Success #stdin #stdout 0s 4304KB
stdin
Standard input is empty
stdout
10
10
20
30
50
50
70