#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
printf("Enter size matrix: ");
int n, cnt=0, temp, next_temp, next_i=0, next_j=0, sign_i=1, sign_j=0;
int cycle=0;
scanf("%d", &n);
int** matrix = (int**) malloc(n*sizeof(int));
for (int i=0; i<n; i++)
{
matrix[i] = (int*)malloc(n*sizeof(int));
for (int j=0; j<n; j++)
matrix[i][j] = ++cnt;
}
printf("\nMatrix before overturn:");
for (int i=0; i<n; i++)
{
printf("\n");
for (int j=0; j<n; j++)
printf(" %3i",matrix[i][j]);
}
// сдвигаем
for (cycle=0; cycle<n/2; cycle++)
{
next_i=cycle; next_j=cycle;
next_temp=matrix[next_i][next_j];
for (int i=0; i<4*(n-1-2*cycle); i++)
{
temp=next_temp;
next_i-=sign_i; next_j-=sign_j;
if(next_i<cycle) { next_i=cycle; sign_i=0; sign_j=-1; ++next_j; /*printf("1 ");*/}
if(next_j>=n-cycle) { next_j=n-1-cycle; sign_i=-1; sign_j=0; ++next_i;/*printf("2 ");*/}
if(next_i>=n-cycle) { next_i=n-1-cycle; sign_i=0; sign_j=1; --next_j; /*printf("3 ");*/}
if(next_j<cycle) { next_j=cycle; sign_i=1; sign_j=0; --next_i; /*printf("4 ");*/}
next_temp=matrix[next_i][next_j];
matrix[next_i][next_j]=temp;
//printf("(%i,%i): %i\n",next_i,next_j, matrix[next_i][next_j]);
}
}
printf("\nMatrix after overturn:");
for (int i=0; i<n; i++)
{
printf("\n");
for (int j=0; j<n; j++)
printf(" %3i",matrix[i][j]);
}
getch();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPGNvbmlvLmg+CiAKIAppbnQgbWFpbigpCnsKIAogICAgcHJpbnRmKCJFbnRlciBzaXplIG1hdHJpeDogIik7CiAgICBpbnQgbiwgY250PTAsIHRlbXAsIG5leHRfdGVtcCwgbmV4dF9pPTAsIG5leHRfaj0wLCBzaWduX2k9MSwgc2lnbl9qPTA7CiAgICBpbnQgY3ljbGU9MDsKICAgIHNjYW5mKCIlZCIsICZuKTsKIAogICAgaW50KiogICBtYXRyaXggPSAoaW50KiopIG1hbGxvYyhuKnNpemVvZihpbnQpKTsKICAgIGZvciAoaW50IGk9MDsgaTxuOyBpKyspCiAgICB7CiAgICAgICAgbWF0cml4W2ldID0gKGludCopbWFsbG9jKG4qc2l6ZW9mKGludCkpOwogICAgICAgIGZvciAoaW50IGo9MDsgajxuOyBqKyspCiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9ICsrY250OyAgICAgICAKICAgIH0KICAgIHByaW50ZigiXG5NYXRyaXggYmVmb3JlIG92ZXJ0dXJuOiIpOwogICAgZm9yIChpbnQgaT0wOyBpPG47IGkrKykKICAgIHsKICAgICAgICBwcmludGYoIlxuIik7CiAgICAgICAgZm9yIChpbnQgaj0wOyBqPG47IGorKykKICAgICAgICAgICAgcHJpbnRmKCIgJTNpIixtYXRyaXhbaV1bal0pOyAgICAgICAgCiAgICB9CiAKICAgIC8vINGB0LTQstC40LPQsNC10LwKICAgIGZvciAoY3ljbGU9MDsgY3ljbGU8bi8yOyBjeWNsZSsrKQogICAgewogICAgICAgIG5leHRfaT1jeWNsZTsgbmV4dF9qPWN5Y2xlOwogICAgICAgIG5leHRfdGVtcD1tYXRyaXhbbmV4dF9pXVtuZXh0X2pdOwogICAgICAgIGZvciAoaW50IGk9MDsgaTw0KihuLTEtMipjeWNsZSk7IGkrKykKICAgICAgICB7ICAgICAgIAogICAgICAgICAgICB0ZW1wPW5leHRfdGVtcDsKICAgICAgICAgICAgbmV4dF9pLT1zaWduX2k7IG5leHRfai09c2lnbl9qOwogICAgICAgICAgICBpZihuZXh0X2k8Y3ljbGUpICAgICAgICB7ICAgbmV4dF9pPWN5Y2xlOyAgIHNpZ25faT0wOyBzaWduX2o9LTE7ICAgICsrbmV4dF9qOyAgIC8qcHJpbnRmKCIxICIpOyovfQogICAgICAgICAgICBpZihuZXh0X2o+PW4tY3ljbGUpIHsgICBuZXh0X2o9bi0xLWN5Y2xlOyBzaWduX2k9LTE7IHNpZ25faj0wOyArK25leHRfaTsvKnByaW50ZigiMiAiKTsqL30KICAgICAgICAgICAgaWYobmV4dF9pPj1uLWN5Y2xlKSB7ICAgbmV4dF9pPW4tMS1jeWNsZTsgc2lnbl9pPTA7IHNpZ25faj0xOyAtLW5leHRfajsgLypwcmludGYoIjMgIik7Ki99CiAgICAgICAgICAgIGlmKG5leHRfajxjeWNsZSkgICAgICAgIHsgICBuZXh0X2o9Y3ljbGU7ICAgc2lnbl9pPTE7IHNpZ25faj0wOyAtLW5leHRfaTsgLypwcmludGYoIjQgIik7Ki99CiAgICAgICAgICAgIG5leHRfdGVtcD1tYXRyaXhbbmV4dF9pXVtuZXh0X2pdOwogICAgICAgICAgICBtYXRyaXhbbmV4dF9pXVtuZXh0X2pdPXRlbXA7CiAgICAgICAgICAgIC8vcHJpbnRmKCIoJWksJWkpOiAlaVxuIixuZXh0X2ksbmV4dF9qLCBtYXRyaXhbbmV4dF9pXVtuZXh0X2pdKTsgICAgICAgIAogICAgICAgIH0KICAgIH0gICAKIAogICAgcHJpbnRmKCJcbk1hdHJpeCBhZnRlciBvdmVydHVybjoiKTsKICAgIGZvciAoaW50IGk9MDsgaTxuOyBpKyspCiAgICB7CiAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgIGZvciAoaW50IGo9MDsgajxuOyBqKyspCiAgICAgICAgICAgIHByaW50ZigiICUzaSIsbWF0cml4W2ldW2pdKTsgICAgICAgIAogICAgfQogCiAgICBnZXRjaCgpOwogICAgcmV0dXJuIDA7Cn0=