Новые сообщения · Правила  
Страница 1 из 11
Модератор форума: Berestovskiy 
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » С, C++ » Циклический сдвиг матрицы
Циклический сдвиг матрицы
Осуществить циклический сдвиг квадратной матрицы таким образом: первая строка перехлдит в последний столбец, последний столбец - в нижнюю строку, нижняя строка в первый столбец, первый столбец - в верхнюю строку и т д.
у меня получильсь так:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
void main ()
{
clrscr ();

int i, j, n, p,z,k, temp, temp2, temp3;
int a[20][20];
cout<<"Vvedite n ";
cin>>n;
//cout<<"Vvedite k ";
//cin>>p;
cout<<"Vvedite massiv"<<endl;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
cin>>a[i][j];
}

for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
cout<<" "<<a[i][j];
cout<<endl;

}
cout<<endl;

for (i=0; i<n; i++)
{
for ( z=n-1; z>0; z-=1)
{
for ( j=i, temp=a[i][j]; j<n-1-i; j++)
{
temp2=a[i][j+1];
a[i][j+1]=temp;
temp=temp2;
}
for (k=i+1; k<n-i; k++)
{
temp3=temp;
temp=a[k][j];
a[k][j]=temp3;

}
for (j--, k--; j>=i; j--)
{
temp3=temp;
temp=a[k][j];
a[k][j]=temp3;
}

for (j++, k--; k>=i; k--)
{
temp3=temp;
temp=a[k][j];
a[k][j]=temp3;
}}}

for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
cout<<" "<<a[i][j];
cout<<endl;
}
getche ();
}

но преподу не нравится как идет смещение во "внутренем" квадрате.
Помогите сделать так, чтобы там смещение щло не на n-1, a на n-3

1 | Автор: Svetlaya | 2009-06-07, 12:41   |  Репутация: [ + 0 ]
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » С, C++ » Циклический сдвиг матрицы
Страница 1 из 11
Поиск: