fork download
  1. #include <iostream>
  2. #define print_matrix \
  3. {\
  4. for(int i = 0; i < N; ++i){\
  5. for(int j = 0; j < M; ++j)\
  6. std::cout << m[i][j] << ' ';\
  7. std::cout << std::endl;\
  8. }\
  9. std::cout << std::endl;\
  10. }
  11.  
  12.  
  13. int main(void){
  14. const int N = 4;
  15. const int M = 5;
  16.  
  17. int m[N][M] = {
  18. { 1, 1, 1, 1, 0 },
  19. { 2, 2, 2, 2, 0 },
  20. { 3, 3, 3, 3, 0 },
  21. { 1, 2, 3, 4, 0 }
  22. };
  23. print_matrix;
  24.  
  25. int n = 2;
  26.  
  27. //сдвиг вправо
  28. int* p, t;
  29. for(p = &m[0][0]; p != &m[N - 1][M]; p += M){
  30. for(int i = 0; i < n; ++i){
  31. t = *(p + (M - 1));
  32. for(int* r = p + (M - 1); r > p; --r)
  33. *r = *(r - 1);
  34. *p = t;
  35. }
  36. }
  37. print_matrix;
  38.  
  39. //сдвиг вниз
  40. int* e = &m[N - 1][0];
  41. for(p = &m[0][0]; p != &m[0][M]; ++p, ++e){
  42. for(int i = 0; i < n; ++i){
  43. t = *e;
  44. for(int* r = e; r > p; r -= M)
  45. *r = *(r - M);
  46. *p = t;
  47. }
  48. }
  49. print_matrix;
  50. return 0;
  51. }
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
1 1 1 1 0 
2 2 2 2 0 
3 3 3 3 0 
1 2 3 4 0 

1 0 1 1 1 
2 0 2 2 2 
3 0 3 3 3 
4 0 1 2 3 

3 0 3 3 3 
4 0 1 2 3 
1 0 1 1 1 
2 0 2 2 2