#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
static void printJaggedArray3D(double ***, size_t, size_t, size_t);
static void printJaggedArray2D(double **, size_t, size_t);
static void printJaggedArray1D(double *, size_t);
static void *createAndFillDoubleArray(size_t n, const size_t [n], size_t, double);
int main(void)
{
const size_t dimensions[3] = {2, 2, 3};
const double value = 3.141593;
double ***array = createAndFillDoubleArray(3, (size_t[]) {1, 3, 4}, 0, 3.141593);
printJaggedArray3D(array, 1, 3, 4);
// printJaggedArray2D(array, 4, 5);
// printJaggedArray1D(array, 4);
}
void *createAndFillDoubleArray(size_t n, const size_t dimensions[n], size_t dim, double value)
{
if (dim < n - 1) {
void **array
= malloc(dimensions
[dim
] * sizeof(double *));
for (size_t i = 0; i < dimensions[dim]; ++i)
array[i] = createAndFillDoubleArray(n, dimensions, dim + 1, value);
return array;
} else {
double *array
= malloc(dimensions
[dim
] * sizeof(double));
for (size_t i = 0; i < dimensions[dim]; ++i)
array[i] = value;
return array;
}
}
void printJaggedArray3D(double ***array, size_t l, size_t m, size_t n)
{
for (size_t i = 0; i < l; i++) {
for (size_t j = 0; j < m; j++) {
for (size_t k = 0; k < n; k++)
printf("%f ", array
[i
][j
][k
]);
}
}
}
static void printJaggedArray2D(double **array, size_t l, size_t m)
{
for (size_t i = 0; i < l; i++) {
for (size_t j = 0; j < m; j++)
}
}
static void printJaggedArray1D(double *array, size_t l)
{
for (size_t i = 0; i < l; i++)
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRhcmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKc3RhdGljIHZvaWQgcHJpbnRKYWdnZWRBcnJheTNEKGRvdWJsZSAqKiosIHNpemVfdCwgc2l6ZV90LCBzaXplX3QpOwpzdGF0aWMgdm9pZCBwcmludEphZ2dlZEFycmF5MkQoZG91YmxlICoqLCBzaXplX3QsIHNpemVfdCk7CnN0YXRpYyB2b2lkIHByaW50SmFnZ2VkQXJyYXkxRChkb3VibGUgKiwgc2l6ZV90KTsKc3RhdGljIHZvaWQgKmNyZWF0ZUFuZEZpbGxEb3VibGVBcnJheShzaXplX3QgbiwgY29uc3Qgc2l6ZV90IFtuXSwgc2l6ZV90LCBkb3VibGUpOwoKaW50IG1haW4odm9pZCkKewoJY29uc3Qgc2l6ZV90IGRpbWVuc2lvbnNbM10gPSB7MiwgMiwgM307Cgljb25zdCBkb3VibGUgdmFsdWUgPSAzLjE0MTU5MzsKCglkb3VibGUgKioqYXJyYXkgPSBjcmVhdGVBbmRGaWxsRG91YmxlQXJyYXkoMywgKHNpemVfdFtdKSB7MSwgMywgNH0sIDAsIDMuMTQxNTkzKTsKCglwcmludEphZ2dlZEFycmF5M0QoYXJyYXksIDEsIDMsIDQpOwoJLy8gcHJpbnRKYWdnZWRBcnJheTJEKGFycmF5LCA0LCA1KTsKCS8vIHByaW50SmFnZ2VkQXJyYXkxRChhcnJheSwgNCk7Cn0KCnZvaWQgKmNyZWF0ZUFuZEZpbGxEb3VibGVBcnJheShzaXplX3QgbiwgY29uc3Qgc2l6ZV90IGRpbWVuc2lvbnNbbl0sIHNpemVfdCBkaW0sIGRvdWJsZSB2YWx1ZSkKewoJaWYgKGRpbSA8IG4gLSAxKSB7CgkJdm9pZCAqKmFycmF5ID0gbWFsbG9jKGRpbWVuc2lvbnNbZGltXSAqIHNpemVvZihkb3VibGUgKikpOwoKCQlmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRpbWVuc2lvbnNbZGltXTsgKytpKQoJCQlhcnJheVtpXSA9IGNyZWF0ZUFuZEZpbGxEb3VibGVBcnJheShuLCBkaW1lbnNpb25zLCBkaW0gKyAxLCB2YWx1ZSk7CgkKCQlyZXR1cm4gYXJyYXk7Cgl9IGVsc2UgewoJCWRvdWJsZSAqYXJyYXkgPSBtYWxsb2MoZGltZW5zaW9uc1tkaW1dICogc2l6ZW9mKGRvdWJsZSkpOwoKCQlmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRpbWVuc2lvbnNbZGltXTsgKytpKQoJCQlhcnJheVtpXSA9IHZhbHVlOwoKCQlyZXR1cm4gYXJyYXk7Cgl9Cn0KCnZvaWQgcHJpbnRKYWdnZWRBcnJheTNEKGRvdWJsZSAqKiphcnJheSwgc2l6ZV90IGwsIHNpemVfdCBtLCBzaXplX3QgbikKewoJZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsOyBpKyspIHsKCQlmb3IgKHNpemVfdCBqID0gMDsgaiA8IG07IGorKykgewoJCQlmb3IgKHNpemVfdCBrID0gMDsgayA8IG47IGsrKykKCQkJCXByaW50ZigiJWYgIiwgYXJyYXlbaV1bal1ba10pOwoJCQkKCQkJcHV0Y2hhcignXG4nKTsKCQl9CgoJCXB1dGNoYXIoJ1xuJyk7Cgl9Cn0KCnN0YXRpYyB2b2lkIHByaW50SmFnZ2VkQXJyYXkyRChkb3VibGUgKiphcnJheSwgc2l6ZV90IGwsIHNpemVfdCBtKQp7Cglmb3IgKHNpemVfdCBpID0gMDsgaSA8IGw7IGkrKykgewoJCWZvciAoc2l6ZV90IGogPSAwOyBqIDwgbTsgaisrKQoJCQlwcmludGYoIiVmICIsIGFycmF5W2ldW2pdKTsKCgkJcHV0Y2hhcignXG4nKTsKCX0KfQoKc3RhdGljIHZvaWQgcHJpbnRKYWdnZWRBcnJheTFEKGRvdWJsZSAqYXJyYXksIHNpemVfdCBsKQp7Cglmb3IgKHNpemVfdCBpID0gMDsgaSA8IGw7IGkrKykKCQlwcmludGYoIiVmICIsIGFycmF5W2ldKTsKfQo=