#include <iostream>
#define print_matrix \
{\
for(int i = 0; i < N; ++i){\
for(int j = 0; j < M; ++j)\
std::cout << m[i][j] << ' ';\
std::cout << std::endl;\
}\
std::cout << std::endl;\
}
int main(void){
const int N = 4;
const int M = 5;
int m[N][M] = {
{ 1, 1, 1, 1, 0 },
{ 2, 2, 2, 2, 0 },
{ 3, 3, 3, 3, 0 },
{ 1, 2, 3, 4, 0 }
};
print_matrix;
int n = 2;
//сдвиг вправо
int* p, t;
for(p = &m[0][0]; p != &m[N - 1][M]; p += M){
for(int i = 0; i < n; ++i){
t = *(p + (M - 1));
for(int* r = p + (M - 1); r > p; --r)
*r = *(r - 1);
*p = t;
}
}
print_matrix;
//сдвиг вниз
int* e = &m[N - 1][0];
for(p = &m[0][0]; p != &m[0][M]; ++p, ++e){
for(int i = 0; i < n; ++i){
t = *e;
for(int* r = e; r > p; r -= M)
*r = *(r - M);
*p = t;
}
}
print_matrix;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojZGVmaW5lIHByaW50X21hdHJpeCBcCntcCglmb3IoaW50IGkgPSAwOyBpIDwgTjsgKytpKXtcCgkJZm9yKGludCBqID0gMDsgaiA8IE07ICsrailcCgkJCXN0ZDo6Y291dCA8PCBtW2ldW2pdIDw8ICcgJztcCgkJc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDtcCgl9XAoJc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDtcCn0KCgppbnQgbWFpbih2b2lkKXsKCWNvbnN0IGludCBOID0gNDsKCWNvbnN0IGludCBNID0gNTsKCglpbnQgbVtOXVtNXSA9IHsKCQl7IDEsIDEsIDEsIDEsIDAgfSwKCQl7IDIsIDIsIDIsIDIsIDAgfSwKCQl7IDMsIDMsIDMsIDMsIDAgfSwKCQl7IDEsIDIsIDMsIDQsIDAgfQoJfTsKCXByaW50X21hdHJpeDsKCglpbnQgbiA9IDI7IAoKCS8v0YHQtNCy0LjQsyDQstC/0YDQsNCy0L4KCWludCogcCwgdDsKCWZvcihwID0gJm1bMF1bMF07IHAgIT0gJm1bTiAtIDFdW01dOyBwICs9IE0pewoJCWZvcihpbnQgaSA9IDA7IGkgPCBuOyArK2kpewoJCQl0ID0gKihwICsgKE0gLSAxKSk7CgkJCWZvcihpbnQqIHIgPSBwICsgKE0gLSAxKTsgciA+IHA7IC0tcikKCQkJCSpyID0gKihyIC0gMSk7CgkJCSpwID0gdDsKCQl9Cgl9CglwcmludF9tYXRyaXg7CgoJLy/RgdC00LLQuNCzINCy0L3QuNC3CglpbnQqIGUgPSAmbVtOIC0gMV1bMF07Cglmb3IocCA9ICZtWzBdWzBdOyBwICE9ICZtWzBdW01dOyArK3AsICsrZSl7CgkJZm9yKGludCBpID0gMDsgaSA8IG47ICsraSl7CgkJCXQgPSAqZTsKCQkJZm9yKGludCogciA9IGU7IHIgPiBwOyByIC09IE0pCgkJCQkqciA9ICoociAtIE0pOwoJCQkqcCA9IHQ7CgkJfQoJfQoJcHJpbnRfbWF0cml4OwoJcmV0dXJuIDA7Cn0=