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. struct DynArray numbers = { 0 };
  12. double newnum;
  13. while (scanf("%lf", &newnum) == 1 && newnum != -1) {
  14. if (numbers.n == numbers.m) {
  15. size_t newsize = numbers.n * 13 / 8 + 1; // use phi aproximation 13/8
  16. double *newarr = realloc(numbers.data, newsize * sizeof *numbers.data);
  17. fprintf(stderr, "INFO: realloc'ed with %d elements.\n", (int)newsize);
  18. if (!newarr) exit(EXIT_FAILURE);
  19. numbers.data = newarr;
  20. numbers.m = newsize;
  21. }
  22. numbers.data[numbers.n] = newnum;
  23. numbers.n++;
  24. }
  25.  
  26. for (int i = numbers.n - 1; i >= 0; --i) {
  27. printf("%f\n", numbers.data[i]);
  28. }
  29.  
  30. free(numbers.data);
  31.  
  32. return 0;
  33. }
  34.  
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.