fork(1) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct DynArray {
  5. double *data;
  6. size_t m; // total
  7. size_t n; // used
  8. };
  9.  
  10. int main(void) {
  11. int cnt = 0;
  12. struct DynArray numbers = { 0 };
  13. double newnum;
  14. while (scanf("%lf", &newnum) == 1 && newnum != -1) {
  15. if (numbers.n == numbers.m) {
  16. size_t newsize = numbers.n * 13 / 8 + 1; // use phi aproximation 13/8
  17. double *newarr = realloc(numbers.data, newsize * sizeof *numbers.data);
  18. fprintf(stderr, "INFO: realloc'ed with %d elements.\n", (int)newsize);
  19. if (!newarr) exit(EXIT_FAILURE);
  20. numbers.data = newarr;
  21. numbers.m = newsize;
  22. }
  23. numbers.data[numbers.n] = newnum;
  24. numbers.n++;
  25. }
  26.  
  27. for (int i = numbers.n - 1; i >= 0; --i) {
  28. printf("%f\n", numbers.data[i]);
  29. }
  30.  
  31. free(numbers.data);
  32.  
  33. return 0;
  34. }
  35.  
Success #stdin #stdout #stderr 0s 9424KB
stdin
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 -1
stdout
987.000000
610.000000
377.000000
233.000000
144.000000
89.000000
55.000000
34.000000
21.000000
13.000000
8.000000
5.000000
3.000000
2.000000
1.000000
1.000000
0.000000
stderr
INFO: realloc'ed with 1 elements.
INFO: realloc'ed with 2 elements.
INFO: realloc'ed with 4 elements.
INFO: realloc'ed with 7 elements.
INFO: realloc'ed with 12 elements.
INFO: realloc'ed with 20 elements.