#include <stdio.h>
#include <stdlib.h>
typedef struct {
size_t rows,cols;
double *mat;
} matrix;
matrix make(size_t rows,size_t cols)
{
matrix m;
m.rows=rows;
m.cols=cols;
m.
mat=(double*)malloc(rows
*cols
*sizeof(double)); return m;
}
void show(matrix m)
{
size_t i,y,x;
for(i
=y
=0;y
<m.
rows;++y
,printf("\n")) for(x
=0;x
<m.
cols;++x
,++i
) printf(" %f"+!x
,m.
mat[i
]); }
double *ati(matrix m,size_t i)
{
return m.mat+i;
}
double *at(matrix m,size_t y,size_t x)
{
return ati(m,y*m.cols+x);
}
void drop(matrix m)
{
}
int main()
{
size_t i;
matrix m1=make(2,5);
matrix m2=make(3,3);
for(i=0;i<9;++i) *(ati(m2,i))=i;
show(m2);
drop(m2);
drop(m1);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgc3RydWN0IHsKCXNpemVfdCByb3dzLGNvbHM7Cglkb3VibGUgKm1hdDsKfSBtYXRyaXg7CgptYXRyaXggbWFrZShzaXplX3Qgcm93cyxzaXplX3QgY29scykKICB7CiAgIG1hdHJpeCBtOwogICBtLnJvd3M9cm93czsKICAgbS5jb2xzPWNvbHM7CiAgIG0ubWF0PShkb3VibGUqKW1hbGxvYyhyb3dzKmNvbHMqc2l6ZW9mKGRvdWJsZSkpOwogICByZXR1cm4gbTsKICB9Cgp2b2lkIHNob3cobWF0cml4IG0pCiAgewogICBzaXplX3QgaSx5LHg7CiAgIGZvcihpPXk9MDt5PG0ucm93czsrK3kscHJpbnRmKCJcbiIpKSBmb3IoeD0wO3g8bS5jb2xzOysreCwrK2kpIHByaW50ZigiICVmIisheCxtLm1hdFtpXSk7CiAgfQoKZG91YmxlICphdGkobWF0cml4IG0sc2l6ZV90IGkpCiAgewogICByZXR1cm4gbS5tYXQraTsKICB9Cgpkb3VibGUgKmF0KG1hdHJpeCBtLHNpemVfdCB5LHNpemVfdCB4KQogIHsKICAgcmV0dXJuIGF0aShtLHkqbS5jb2xzK3gpOwogIH0KCnZvaWQgZHJvcChtYXRyaXggbSkKICB7CiAgIGZyZWUobS5tYXQpOwogIH0KCmludCBtYWluKCkKICB7CiAgIHNpemVfdCBpOwogICBtYXRyaXggbTE9bWFrZSgyLDUpOwogICBtYXRyaXggbTI9bWFrZSgzLDMpOwogICBmb3IoaT0wO2k8OTsrK2kpICooYXRpKG0yLGkpKT1pOwogICBzaG93KG0yKTsKICAgZHJvcChtMik7CiAgIGRyb3AobTEpOwogICByZXR1cm4gMDsKICB9