#include <stdio.h>
#include <stdlib.h>
typedef struct {
unsigned w, h;
int* data;
} IntArray2Dim;
IntArray2Dim create(unsigned w, unsigned h) {
IntArray2Dim array;
array.w = w;
array.h = h;
array.
data = (int*) calloc(w
* h
, sizeof(int)); return array;
}
int get(IntArray2Dim arr, unsigned i, unsigned j) {
return arr.data[arr.h * i + j];
}
void set(IntArray2Dim arr, unsigned i, unsigned j, int value) {
arr.data[arr.h * i + j] = value;
}
void destroy(IntArray2Dim arr) {
}
void print(IntArray2Dim arr) {
unsigned i, j;
for(i = 0; i < arr.w; ++i) {
for(j = 0; j < arr.h; ++j) {
int value = get(arr, i, j);
}
}
}
int main(void) {
IntArray2Dim array = create(5, 3);
set(array, 4, 2, 123);
set(array, 3, 1, 100);
set(array, 0, 2, 250);
print(array);
destroy(array);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgc3RydWN0IHsKCXVuc2lnbmVkIHcsIGg7CglpbnQqIGRhdGE7Cn0gSW50QXJyYXkyRGltOwoKSW50QXJyYXkyRGltIGNyZWF0ZSh1bnNpZ25lZCB3LCB1bnNpZ25lZCBoKSB7CglJbnRBcnJheTJEaW0gYXJyYXk7CglhcnJheS53ID0gdzsKCWFycmF5LmggPSBoOwoJYXJyYXkuZGF0YSA9IChpbnQqKSBjYWxsb2ModyAqIGgsIHNpemVvZihpbnQpKTsgCglyZXR1cm4gYXJyYXk7Cn0KCmludCBnZXQoSW50QXJyYXkyRGltIGFyciwgdW5zaWduZWQgaSwgdW5zaWduZWQgaikgewoJcmV0dXJuIGFyci5kYXRhW2Fyci5oICogaSArIGpdOwp9Cgp2b2lkIHNldChJbnRBcnJheTJEaW0gYXJyLCB1bnNpZ25lZCBpLCB1bnNpZ25lZCBqLCBpbnQgdmFsdWUpIHsKCWFyci5kYXRhW2Fyci5oICogaSArIGpdID0gdmFsdWU7Cn0KCnZvaWQgZGVzdHJveShJbnRBcnJheTJEaW0gYXJyKSB7CglmcmVlKGFyci5kYXRhKTsKfQoKdm9pZCBwcmludChJbnRBcnJheTJEaW0gYXJyKSB7Cgl1bnNpZ25lZCBpLCBqOwoJZm9yKGkgPSAwOyBpIDwgYXJyLnc7ICsraSkgewoJCWZvcihqID0gMDsgaiA8IGFyci5oOyArK2opIHsKCQkJaW50IHZhbHVlID0gZ2V0KGFyciwgaSwgaik7CgkJCXByaW50ZigiJWQgIiwgdmFsdWUpOwoJCX0KCQlwdXRjaGFyKCdcbicpOwoJfQp9CgppbnQgbWFpbih2b2lkKSB7CglJbnRBcnJheTJEaW0gYXJyYXkgPSBjcmVhdGUoNSwgMyk7CglzZXQoYXJyYXksIDQsIDIsIDEyMyk7CglzZXQoYXJyYXksIDMsIDEsIDEwMCk7CglzZXQoYXJyYXksIDAsIDIsIDI1MCk7CglwcmludChhcnJheSk7CglkZXN0cm95KGFycmF5KTsKCXJldHVybiAwOwp9Cg==