fork download
  1. #include <stdio.h>
  2. #include <stdarg.h>
  3. #include <stdlib.h>
  4.  
  5. static void printJaggedArray3D(double ***, size_t, size_t, size_t);
  6. static void printJaggedArray2D(double **, size_t, size_t);
  7. static void printJaggedArray1D(double *, size_t);
  8. static void *createAndFillDoubleArray(size_t n, const size_t [n], size_t, double);
  9.  
  10. int main(void)
  11. {
  12. const size_t dimensions[3] = {2, 2, 3};
  13. const double value = 3.141593;
  14.  
  15. double ***array = createAndFillDoubleArray(3, (size_t[]) {1, 3, 4}, 0, 3.141593);
  16.  
  17. printJaggedArray3D(array, 1, 3, 4);
  18. // printJaggedArray2D(array, 4, 5);
  19. // printJaggedArray1D(array, 4);
  20. }
  21.  
  22. void *createAndFillDoubleArray(size_t n, const size_t dimensions[n], size_t dim, double value)
  23. {
  24. if (dim < n - 1) {
  25. void **array = malloc(dimensions[dim] * sizeof(double *));
  26.  
  27. for (size_t i = 0; i < dimensions[dim]; ++i)
  28. array[i] = createAndFillDoubleArray(n, dimensions, dim + 1, value);
  29.  
  30. return array;
  31. } else {
  32. double *array = malloc(dimensions[dim] * sizeof(double));
  33.  
  34. for (size_t i = 0; i < dimensions[dim]; ++i)
  35. array[i] = value;
  36.  
  37. return array;
  38. }
  39. }
  40.  
  41. void printJaggedArray3D(double ***array, size_t l, size_t m, size_t n)
  42. {
  43. for (size_t i = 0; i < l; i++) {
  44. for (size_t j = 0; j < m; j++) {
  45. for (size_t k = 0; k < n; k++)
  46. printf("%f ", array[i][j][k]);
  47.  
  48. putchar('\n');
  49. }
  50.  
  51. putchar('\n');
  52. }
  53. }
  54.  
  55. static void printJaggedArray2D(double **array, size_t l, size_t m)
  56. {
  57. for (size_t i = 0; i < l; i++) {
  58. for (size_t j = 0; j < m; j++)
  59. printf("%f ", array[i][j]);
  60.  
  61. putchar('\n');
  62. }
  63. }
  64.  
  65. static void printJaggedArray1D(double *array, size_t l)
  66. {
  67. for (size_t i = 0; i < l; i++)
  68. printf("%f ", array[i]);
  69. }
  70.  
Success #stdin #stdout 0s 4472KB
stdin
Standard input is empty
stdout
3.141593 3.141593 3.141593 3.141593 
3.141593 3.141593 3.141593 3.141593 
3.141593 3.141593 3.141593 3.141593