Дана квадратная матрица:
Осуществить циклический сдвиг элементов матрицы размерности NxN вправо на k элементов таким образом: элементы 1-й строки сдвигаются в последний столбец сверху вниз, из него — в последнюю строку справа налево, из нее — в первый столбец снизу вверх, из него — в первую строку; для остальных элементов — аналогично.
Код программы:
//--------------------------------------------------------------------------- #include<iostream.h> #include<conio.h> #include<math.h> #include<iomanip.h> #include<windows.h> #include<fstream.h> #include <vcl.h> #pragma hdrstop #pragma argsused //--------------------------------------------------------------------------- char *rus(const char *text); //объявление функции для распознавания русских букв int main(int argc, char* argv[]) { int n,m,i,j; //объявление переменных cout<<rus("Введите размерность квадратной матрицы n=");cin>>n; float **A=new float*[n]; //объявление 1 массива for(i=0;i<n;i++)A[i]=new float [n]; float **A1=new float*[n]; //объявление 2 массива куда временно for(i=0;i<n;i++)A1[i]=new float [n]; //будут занесены элементы 1 массива cout<<rus("\nВведите элементы массива:")<<endl<<endl; randomize(); for(i=0;i<n;i++) { for(j=0;j<n;j++) { A[i][j]=-5.2+random(10.1); //случайное заполнение массива A1[i][j]=A[i][j]; //присвоение элементов первого массива второму cout<<setw(6)<<A[i][j]; //вывод массива } cout<<endl; } cout<<endl; for(i=0;i<n;i++) { for(j=0;j<n;j++) A1[n-1-i][n-1-j]=A[i][n-1-j]; //сдвиг матрицы } cout<<rus("Сдвинутая матрица:")<<endl<<endl; for(i=0;i<n;i++) { for(j=0;j<n;j++) { cout<<A1[j][i]<<' '; //вывод сдвинутой матрицы } cout<<endl; } getch(); return 0; } //--------------------------------------------------------------------------- char bufrus[256]; char *rus(const char *text) { CharToOem(text, bufrus); return bufrus; } //---------------------------------------------------------------------------
Результат работы программы: