Дана прямоугольная матрица:
Осуществить циклический сдвиг элементов матрицы на n элементов вправо или вниз (в зависимости от введенного режима), n может быть больше количества элементов в строке или столбце.
Код программы:
//--------------------------------------------------------------------------- #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,l,i,j,k,nmin,mmin,buf_a,q=0; //объявление переменных cout<<rus("Введите размерность массива:")<<endl; cout<<rus("\nВведите количество строк: n=");cin>>n; cout<<rus("Введите количество столбцов: m=");cin>>m; cout<<rus("Введите количество циклов сдвига: l=");cin>>l; cout<<rus("Нажмите 1, чтобы осуществить сдвиг матрицы вниз, 2-сдвиг вправо: q=");cin>>q; float **a=new float*[n]; //объявление массива for(i=0;i<n;i++)a[i]=new float[m]; cout<<rus("\nВведите элементы массива:")<<endl<<endl; randomize(); for(i=0;i<n;i++) { for(j=0;j<m;j++) { a[i][j]=-5+random(20); //случайное заполнение массива cout<<setw(4)<<a[i][j]; //вывод массива } cout<<endl; } if(0==q)cout<<rus("\nВы не ввели направление сдвига!"); else { for(k=0;k<l;k++) { if(1==q) { for(i=n-1;i>0;i--) { nmin=i-1; for(j=0;j<m;j++) { buf_a=a[i][j]; a[i][j]=a[nmin][j]; a[nmin][j]=buf_a; } } } if(2==q) { for(j=m-1;j>0;j--) { mmin=j-1; for(i=0;i<n;i++) { buf_a=a[i][j]; a[i][j]=a[i][mmin]; a[i][mmin]=buf_a; } } } } cout<<endl; cout<<rus("\nСдвинутая матрица:")<<endl<<endl; for(i=0;i<n;i++) { for(j=0;j<m;j++) cout<<setw(4)<<a[i][j]; //вывод сдвинутой матрицы cout<<endl; } } getch(); return 0; } //--------------------------------------------------------------------------- char bufrus[256]; char *rus(const char *text) { CharToOem(text, bufrus); return bufrus; } //---------------------------------------------------------------------------
Результат работы программы: